<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
  <link rel="stylesheet" media="screen" type="text/css" href="./style.css" />
  <link rel="stylesheet" media="screen" type="text/css" href="./design.css" />
  <link rel="stylesheet" media="print" type="text/css" href="./print.css" />

  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<div class="dokuwiki export">

<p>
<em>Эта страница доступна также на следующих языках:</em> <a href="geda-csygas.html" class="wikilink1" title="geda-csygas.html">English</a>
</p>

<h1 class="sectionedit1"><a name="схемотехническое_моделирование_с_помощью_geda_и_spice" id="схемотехническое_моделирование_с_помощью_geda_и_spice">Схемотехническое моделирование с помощью gEDA и SPICE</a></h1>
<div class="level1">

<p>
<em>Stuart Brorson</em><br/>
Electroniscript, inc.<br/>
sdb@electroniscript.com<br/>
<br/>
5
января 2006 г.
</p>

<p>
<strong>Предисловие</strong><br/>

Linux становится всё более и более популярной платформой для проектирования. Благодаря программистам сообщества свободного программного обеспечения для проектирования электрических схем становятся доступны приложения <a href="geda-glossary.ru.html#сапр" class="wikilink1" title="geda-glossary.ru.html">САПР</a> профессионального качества.  Предпочтительным инструментарием проектирования электронных схем является gEDA Suite. Теперь и в Linux доступно <a href="geda-glossary.ru.html#схемотехническое_моделирование" class="wikilink1" title="geda-glossary.ru.html">моделирование</a> аналоговых процессов в электрических схемах с помощью <a href="geda-glossary.ru.html#spice" class="wikilink1" title="geda-glossary.ru.html">SPICE</a>. В настоящем документе описывается <a href="geda-glossary.ru.html#маршрут_проектирования" class="wikilink1" title="geda-glossary.ru.html">маршрут проектирования</a>, используемый для выполнении SPICE-моделирования программными средствами gEDA в Linux.
</p>

<p>
Настоящий документ разрешается копировать, распространять и/или изменять под
условиями Лицензии Свободной Документации GNU<sup><a href="#fn__1" name="fnt__1" id="fnt__1" class="fn_top">1)</a></sup> версии 2 или любой более поздней, опубликованной организацией Free
Software Foundation, без неизменяемых разделов, без текстов передней и
задней обложки. Вы можете получить копию Лицензии Свободной Документации GNU
от Free Software Foundation, посетив её веб-страницу (<a href="http://www.fsf.org/" class="urlextern" title="http://www.fsf.org/"  rel="nofollow">http://www.fsf.org/</a>)
или написав письмо по адресу: Free Software Foundation, Inc., 51 Franklin
Street, Fifth Floor, Boston, MA 02110-1301 USA.
</p>

</div>
<!-- EDIT1 SECTION "Схемотехническое моделирование с помощью gEDA и SPICE" [115-2744] -->
<h2 class="sectionedit2"><a name="введение" id="введение">Введение</a></h2>
<div class="level2">

<p>
Современное проектирование является дисциплиной, интенсивно использующей
вычислительную технику. Как и специалисты, работающие в других сферах
проектирования, инженеры-электротехники и проектировщики электроники активно
используют все виды программного обеспечения САПР, включая как программы для
проектирования <a href="geda-glossary.ru.html#принципиальная_схема" class="wikilink1" title="geda-glossary.ru.html">электрических схем</a>
и моделирования их работы, так и для производства
<a href="geda-glossary.ru.html#печатная_плата" class="wikilink1" title="geda-glossary.ru.html">печатных плат</a> и
<a href="geda-glossary.ru.html#интегральная_схема" class="wikilink1" title="geda-glossary.ru.html">интегральных схем</a>. САПР,
используемые инженерами-электротехниками, имеют особое название —
<a href="geda-glossary.ru.html#сапр_электроники" class="wikilink1" title="geda-glossary.ru.html">САПР электроники</a>. Это название объединяет разные виды
программ САПР. Например, на этапе работы с графическими средствами инженер
для ввода проекта в компьютер использует программу
<a href="geda-glossary.ru.html#схемотехническое_проектирование" class="wikilink1" title="geda-glossary.ru.html">схемотехнического
проектирования</a> — редактор схем. Редактор схем — это, по существу,
специализированная чертёжная программа, включающая набор
<a href="geda-glossary.ru.html#символ" class="wikilink1" title="geda-glossary.ru.html">символов</a>, используемых для создания схем. После
ввода схемы инженеру может быть нужно промоделировать процессы в её цепях,
чтобы проверить, что разработанная им схема будет работать именно так, как
нужно. Наиболее популярная программа для этих целей — SPICE (Simulation
Program with Integrated Circuit Emphasis), её разрабатывали в
Беркли<sup><a href="#fn__2" name="fnt__2" id="fnt__2" class="fn_top">3)</a></sup> начиная с 70-х годов и сегодня она широко доступна в разных
формах. Сейчас SPICE считается фундаментальным средством проектирования и
является существенной частью занятий большинства обучающихся инженеров.
</p>

<p>
<a href="http://www.geda-project.org/" class="urlextern" title="http://www.geda-project.org/"  rel="nofollow">Проект gEDA</a> — работа по созданию в рамках
программного обеспечения с открытым исходным кодом набора программ САПР
электроники для Linux под лицензией <acronym title="GNU General Public License">GPL</acronym>.  Проект gEDA уже настолько развит,
что мощь и качество его программ весьма высоки; сегодня используя gEDA Suite
можно создавать сложные <a href="geda-glossary.ru.html#список_соединений" class="wikilink1" title="geda-glossary.ru.html">списки
соединений</a> (файлы) SPICE, включающие в себя файлы
<a href="geda-glossary.ru.html#модель" class="wikilink1" title="geda-glossary.ru.html">моделей</a> поставщиков компонентов. Затем с помощью
этих файлов можно производить SPICE-моделирование, используя различные
программы моделирования, работающие в Linux. Цель настоящего документа —
объяснить, как использовать программные средства gEDA (обычно работающие в
Linux) для выполнения SPICE-моделирования. В частности здесь описывается
использование <strong>spice-sdb</strong>, продвинутого драйвера
<a href="geda-glossary.ru.html#генератор_списка_соединений" class="wikilink1" title="geda-glossary.ru.html">генератора списка
соединений</a> gEDA (<strong>gnetlist</strong>), применяемого для создания списков
соединений SPICE. <strong>spice-sdb</strong> входит в набор программ gEDA; если вы
установили gEDA, то для создания списков соединений SPICE всё уже
готово. Также в настоящем HOWTO приводятся советы по использованию
<strong>ngspice/tclspice</strong> и/или <strong>LTSpice</strong> для моделирования работы схем, списки
соединений для которых созданы с помощью <strong>spice-sdb</strong>.
</p>

</div>
<!-- EDIT2 SECTION "Введение" [2745-7846] -->
<h3 class="sectionedit3"><a name="целевая_аудитория_данного_howto" id="целевая_аудитория_данного_howto">Целевая аудитория данного HOWTO</a></h3>
<div class="level3">

<p>
Настоящий HOWTO не является учебником по проектированию электрических схем или по SPICE-моделированию. Он, скорее, создан для того, чтобы помочь обучающимся инженерам начать использовать gEDA для SPICE-моделирования на платформе Linux.  Поэтому я предполагаю, что вы в общих чертах уже знакомы с разработкой электронных схем, механикой ввода схем в программах САПР и SPICE-моделированием. Я также предполагаю, что вы достаточно знакомы с операционной системой GNU/Linux и с её рабочим окружением. Наконец, я предполагаю, что вы уже установили программы gEDA и знаете как ими пользоваться. Если вам нужно быстрее набраться опыта в каком-то из указанных вопросов, дополнительную информацию можно найти на следующих веб-страницах:
</p>
<ul>
<li class="level1"><div class="li"> Проект gEDA: <a href="http://www.geda-project.org/" class="urlextern" title="http://www.geda-project.org"  rel="nofollow">http://www.geda-project.org</a></div>
</li>
<li class="level1"><div class="li"> <a href="geda-faq-simulation.ru.html" class="wikilink1" title="geda-faq-simulation.ru.html">FAQ по моделированию</a></div>
</li>
<li class="level1"><div class="li"> Синтаксис и команды SPICE 3: <a href="http://newton.ex.ac.uk/teaching/CDHW/Electronics2/userguide/" class="urlextern" title="http://newton.ex.ac.uk/teaching/CDHW/Electronics2/userguide/"  rel="nofollow">http://newton.ex.ac.uk/teaching/CDHW/Electronics2/userguide/</a></div>
</li>
<li class="level1"><div class="li"> Ngspice: <a href="http://ngspice.sourceforge.net/" class="urlextern" title="http://ngspice.sourceforge.net/"  rel="nofollow">http://ngspice.sourceforge.net/</a></div>
</li>
<li class="level1"><div class="li"> Tclspice: <a href="http://tclspice.sourceforge.net/" class="urlextern" title="http://tclspice.sourceforge.net/"  rel="nofollow">http://tclspice.sourceforge.net/</a></div>
</li>
<li class="level1"><div class="li"> LTSpice: <a href="http://www.linear.com/software/" class="urlextern" title="http://www.linear.com/software/"  rel="nofollow">http://www.linear.com/software/</a></div>
</li>
<li class="level1"><div class="li"> gEDA для начинающих — немного устаревший, но замечательный ресурс <a href="http://www-mdp.eng.cam.ac.uk/web/CD/engapps/geda/starting_gEDA_long.pdf" class="urlextern" title="http://www-mdp.eng.cam.ac.uk/web/CD/engapps/geda/starting_gEDA_long.pdf"  rel="nofollow">http://www-mdp.eng.cam.ac.uk/web/CD/engapps/geda/starting_gEDA_long.pdf</a></div>
</li>
</ul>

</div>
<!-- EDIT3 SECTION "Целевая аудитория данного HOWTO" [7847-9900] -->
<h3 class="sectionedit4"><a name="признательность" id="признательность">Признательность</a></h3>
<div class="level3">

<p>
Настоящий документ не живёт в изоляции. В создании данного HOWTO мне
помогало несколько активных членов сообщества свободных САПР
электроники. Во-первых и прежде всего, <em>Paolo Nenzi</em>, автор <strong>ngspice</strong>,
взял мой исходный HOWTO и перевёл его в документ <strong>Lyx</strong>, который я мог
затем перевести в DocBook. Спасибо тебе, <em>Paolo</em>, за помощь в работе над
этим HOWTO и, что более важно, спасибо за твою великолепную работу над
<strong>ngspice</strong>! Также во главе списка значится <em>Ales Hvezda</em>, движущая сила
проекта gEDA. Без него ничего из этого не было бы теперь возможным; его
вклад в виде программы <strong>gschem</strong> неоценим. Спасибо, <em>Ales</em>, за создание
gEDA и распространение по миру под лицензией <acronym title="GNU General Public License">GPL</acronym> — ты начал революцию!
<em>Stefan Jones</em> заслуживает огромной благодарности за его работу над
<strong>tclspice</strong>, любезную поддержку и усилия по интеграции, когда я предлагал
исправления для проекта <strong>tclspice</strong>. Я также должен поблагодарить
<em>W. Kazubski</em> и <em>S. Gieltjes</em> — они написали исходные версии
генераторов списков соединений SPICE, на которых основывается мой
<strong>gnet-spice-sdb.scm</strong>. Я также хочу поблагодарить <em>Ken Healy</em> за
добавление исправления сортировки списка соединений, и <em>Peter Kaiser</em> за
то, что побудил меня включить некоторые возможности, полезные для
моделирования интегральных схем. <em>Peter</em> заслуживает также благодарности
за написание некоторых разделов данного документа, относящихся к
устройствам. Наконец, я признателен за помощь и предложения, полученные от
читателей списка рассылки <em>geda-user</em>. Прелесть свободного программного
обеспечения в том, что оно побуждает к сотрудничеству, а это значит, что
конечный результат всегда будет лучше того, которого можно было бы достичь в
одиночку.
</p>

</div>
<!-- EDIT4 SECTION "Признательность" [9901-12842] -->
<h3 class="sectionedit5"><a name="общий_обзормаршрут_проектирования_в_geda" id="общий_обзормаршрут_проектирования_в_geda">Общий обзор: маршрут проектирования в gEDA</a></h3>
<div class="level3">

<p>
В САПР электроники важна концепция «маршрута проектирования». gEDA — это
набор программных средств для проектирования электроники, а не одно
приложение. И «маршрут проектирования» определяет порядок использования этих
средств для достижения цели. В зависимости от того, проектируете ли вы
аналоговую или цифровую схему, разрабатываете ли платы или интегральные
схемы, от того, какой тип файлов требуется производителю ваших плат, и от
ряда других факторов, для достижения цели будут использоваться различные
средства gEDA Suite.
</p>

<p>
Блок-схема, на которой представлен маршрут проектирования в gEDA, показана
на рисунке ниже. На блок-схеме показана простая последовательность,
пригодная для проектирования, моделирования и разводки печатных плат. Как
можно увидеть, моделирование (голубые блоки) циклически повторяется. Это
значит, что после создания схемы её моделирование производится повторно до
тех пор, пока её поведение не будет соответствовать требуемым
спецификациям.  <a href="media/geda/geda_flow.ru.png?id=geda%3Acsygas.ru" class="media" title="geda:geda_flow.ru.png"><img src="media/geda/geda_flow.ru.png" class="mediacenter" alt="" /></a> Маршрут проектирования в
gEDA. В блоке «Моделирование» в скобках указано несколько разных программ,
пригодных для моделирования. В рамках настоящего документа нас интересуют
только SPICE-варианты (например, <strong>ngspice</strong>, <strong>tclspice</strong>).
</p>

</div>
<!-- EDIT5 SECTION "Общий обзор: маршрут проектирования в gEDA" [12843-15136] -->
<h3 class="sectionedit6"><a name="обзор_использования_spice_в_geda" id="обзор_использования_spice_в_geda">Обзор использования SPICE в gEDA</a></h3>
<div class="level3">

<p>
Концептуально SPICE-моделирование в gEDA включает следующие этапы:
</p>
<ol>
<li class="level1"><div class="li"> Создание и подбор символов схем и файлов моделей SPICE. Часто файлы SPICE-моделей можно получить у поставщика компонентов. Как правило, многие модели можно найти на веб-странице поставщика.</div>
</li>
<li class="level1"><div class="li"> Разработка схемы с помощью символов и моделей SPICE, созданных на первом этапе.</div>
</li>
<li class="level1"><div class="li"> Создание списка соединений из схемы, созданной на втором этапе.</div>
</li>
<li class="level1"><div class="li"> SPICE-моделирование схемы, представленной в виде списка соединений, созданного на третьем этапе.</div>
</li>
</ol>

<p>
На приведённой выше блок-схеме эти этапы отмечены голубым цветом.
</p>

<p>
Чтобы создать список соединений SPICE, генератор списка соединений (<strong>gnetlist</strong>) циклически проходится по всей схеме и проверяет особые части символов каждого из компонентов для формирования частей кода. Как правило, для каждого компонента может генерироваться одна или более строк кода SPICE.  Информация о компоненте, необходимая генератору списка соединений, содержится в двух местах:
</p>
<ol>
<li class="level1"><div class="li"> В самом символе, в атрибуте <code>device</code>, который прикрепляется при создании символа и обычно редактируется в редакторе символов.</div>
</li>
<li class="level1"><div class="li"> В атрибутах, прикреплённых к компоненту вручную в <strong>gschem</strong> при разработке схемы.</div>
</li>
</ol>

<p>
Так как генератор списка соединений ищет информацию в двух местах,
<strong><em>необходимо обеспечить, чтобы требуемая информация имелась в каждом из
них</em></strong>.
</p>

</div>
<!-- EDIT6 SECTION "Обзор использования SPICE в gEDA" [15137-17567] -->
<h3 class="sectionedit7"><a name="подробное_изложение_процесса_разработки_моделирования" id="подробное_изложение_процесса_разработки_моделирования">Подробное изложение процесса разработки/моделирования</a></h3>
<div class="level3">

<p>
Вот более подробный перечень шагов, необходимых для разработки и моделирования работы схем в gEDA:
</p>
<ol>
<li class="level1"><div class="li"> Создание символов для схемы с правильными атрибутами <code>device</code>. (Обычно правильные атрибуты <code>device</code> устанавливаются в процессе создания символов и поэтому чаще всего уже заданы, но если у вас проблемы, не помешает их проверить.)</div>
</li>
<li class="level1"><div class="li"> Разработка схемы в <strong>gschem</strong>.</div>
</li>
<li class="level1"><div class="li"> Установка для компонентов SPICE-атрибутов (<code>value</code>, <code>model</code>, <code>file</code>, <code>type</code> и др.) в <strong>gschem</strong> или <strong>gattrib</strong>.</div>
</li>
<li class="level1"><div class="li"> Установка атрибутов <code>refdes</code>, например с помощью <strong>refdes_renum</strong>.</div>
</li>
<li class="level1"><div class="li"> Создание списка соединений с помощью: <strong><code>gnetlist -g spice-sdb</code></strong>.</div>
</li>
<li class="level1"><div class="li"> Проверка отсутствия ошибок в списке соединений (производится вручную, нужно открыть и внимательно просмотреть содержимое файла).</div>
</li>
<li class="level1"><div class="li"> Запуск программы SPICE-моделирования, такой как, например, <strong>LTSpice</strong>, <strong>ngspice</strong> или <strong>tclspice</strong>.</div>
</li>
<li class="level1"><div class="li"> Построение графиков и анализ результатов (часто средства построения графиков и анализа встроены в программу моделирования).</div>
</li>
<li class="level1"><div class="li"> Если вы недовольны характеристиками своей схемы, выявленными при моделировании, можете вернуться к шагу 2, подправить схему в <strong>gschem</strong> и далее циклически повторять этот процесс до достижения нужного результата.</div>
</li>
</ol>

<p>
Цель настоящего документа состоит в том, чтобы дать вам чёткое понимание
деталей данного процесса, необходимое для его успешного направления.
</p>

</div>
<!-- EDIT7 SECTION "Подробное изложение процесса разработки/моделирования" [17568-19978] -->
<h2 class="sectionedit8"><a name="подготовительная_работаподготовка_символов_и_файлов_spice" id="подготовительная_работаподготовка_символов_и_файлов_spice">Подготовительная работа: подготовка символов и файлов SPICE</a></h2>
<div class="level2">

<p>
При создании символов для схемы нужно обеспечить, чтобы некоторые встроенные
атрибуты были заданы правильно. Приводимые ниже изменения такого рода
осуществляются либо редактированием нужного символа в графическом интерфейсе
редактора символов <strong>gschem</strong>, либо редактированием файла символа в
текстовом редакторе.
</p>

</div>
<!-- EDIT8 SECTION "Подготовительная работа: подготовка символов и файлов SPICE" [19979-20675] -->
<h3 class="sectionedit9"><a name="настройка_символов" id="настройка_символов">Настройка символов</a></h3>
<div class="level3">

</div>

<h4><a name="идентификация_компонента_генератором_списков_соединений" id="идентификация_компонента_генератором_списков_соединений">Идентификация компонента генератором списков соединений</a></h4>
<div class="level4">

<p>
Генератор списка соединений SPICE может идентифицировать любой конкретный символ по одному из двух атрибутов:
</p>
<ol>
<li class="level1"><div class="li"> <code>device</code> или</div>
</li>
<li class="level1"><div class="li"> <code>refdes</code>.</div>
</li>
</ol>

<p>
Каждый из них прикрепляется к символу во время его создания.
</p>

<p>
К каждому символу прикреплён атрибут <code>device</code>. Этот атрибут генератор
списка соединений проверяет при обработке символа первым. Есть несколько
поддерживаемых генератором списка соединений устройств («родных» для него),
имеется в виду, что генератор точно знает, как обходиться с данными типами
устройств. Непосредственно поддерживаются <strong>RESISTOR</strong>, <strong>CAPACITOR</strong>,
<strong>NPN_TRANSISTOR</strong> и т. д. Полный список поддерживаемых устройств
представлен в <a href="#приложение_a_поддерживаемые_компоненты_и_их_атрибуты" title="geda:csygas.ru &crarr;" class="wikilink1">Приложении A</a>.
</p>

<p>
Обычно при работе в <strong>gschem</strong> атрибуты <code>device</code> остаются скрытыми. Чаще
всего правильные значения этих атрибутов уже заданы в символах их
авторами. Но поскольку атрибут <code>device</code> скрыт от обычного пользователя, он
может иногда являться причиной проблем при создании списка соединений SPICE,
если установлен в непредвиденное значение. Чтобы увидеть атрибуты
<code>device</code>, нужно перейти в редактор символов (выделить символ для
редактирования и из меню выбрать <strong><em>Иерархия</em></strong> → <strong><em>Внутрь символа</em></strong>,
а затем переключить видимость атрибутов (<strong><em>Правка</em></strong> →
<strong><em>Показать/Скрыть невидимый текст</em></strong>). Можно также открыть файл этого
символа в текстовом редакторе и, если атрибут <code>device</code> неправилен,
изменить его там.
</p>

<p>
Если символ не поддерживается (то есть генератор списка соединений не
находит соответствующего встроенного типа), то чтобы определить, как его
обрабатывать, генератор опирается на первую букву значения атрибута
<code>refdes</code>.  Префикс (первая часть) значения <code>refdes</code> также встраивается в
символ при его создании. Примерами префиксов <code>refdes</code> являются <em>R</em> для
резисторов, <em>C</em> для конденсаторов, <em>Q</em> для транзисторов и
т. д. Правильные префиксы для SPICE перечислены в <a href="#приложение_a_поддерживаемые_компоненты_и_их_атрибуты" title="geda:csygas.ru &crarr;" class="wikilink1">Приложении A</a>. Заметьте, что
опираться на <code>refdes</code> для идентификации компонента в SPICE небезопасно,
— по его значению генератор списка соединений не сможет, например,
различить транзисторы структуры <em>NPN</em> и <em>PNP</em>. Поэтому в своих символах
лучше всего всегда использовать атрибут <code>device</code>, задавая для него
значение, поддерживаемое генератором.
</p>

</div>

<h4><a name="настройка_очерёдности_выводов" id="настройка_очерёдности_выводов">Настройка очерёдности выводов</a></h4>
<div class="level4">

<p>
Выводы компонента выдаются генератором списка соединений в порядке, заданном
посредством атрибутов <code>pinseq</code>. Заметьте, что он не тождественен порядку
физического расположения выводов. Для установки атрибутов <code>pinseq</code> сначала
следует определить нужный вам порядок выводов. В SPICE для многих
компонентов, в том числе для диодов и транзисторов, используется особый
порядок выводов.  Например, выводы биполярного транзистора перечисляются в
порядке <em>CBE</em> (коллектор-база-эмиттер).  Другой пример: если ваш символ
должен представлять интегральную схему (ИС) с моделью в виде файла
<em><code>.subckt</code></em> поставщика, то порядок соединений для этой
<a href="geda-glossary.ru.html#подсхема" class="wikilink1" title="geda-glossary.ru.html">подсхемы</a> устанавливается в файле строкой
<code>.subckt</code>.
</p>

<p>
Как только вы узнали порядок выдачи выводов для электронного компонента,
просто задайте правильную последовательность в их атрибутах <code>pinseq</code>.
Таким образом и будет обеспечен правильный порядок.
</p>

</div>
<!-- EDIT9 SECTION "Настройка символов" [20676-26571] -->
<h3 class="sectionedit10"><a name="настройка_файлов_spice" id="настройка_файлов_spice">Настройка файлов SPICE</a></h3>
<div class="level3">

<p>
Файлы, содержащие сложные модели или другой код SPICE, могут быть встроены в результирующий список соединений при добавлении в схему соответствующих символов. Файлы моделей SPICE обычно можно найти у поставщиков компонентов.  Работа с ними проста. Тем не менее при подготовке моделей для принципиальной схемы некоторые моменты всё же стоит иметь в виду:
</p>
<ul>
<li class="level1"><div class="li"> Обычно целесообразно помещать эти файлы в специально отведённый для них каталог, отличный от каталогов символов.</div>
</li>
<li class="level1"><div class="li"> <em>Удостоверьтесь, что выводы в файлах SPICE и в символах компонентов имеют одинаковое назначение!</em> Важность этого правила трудно переоценить. Порядок, в котором выводы перечислены в файле <em><code>.subckt</code></em> необязательно соответствует порядку их физического расположения для компонента. Как описано выше, выводы выдаются генератором списка соединений в порядке, заданном атрибутами <code>pinseq</code>.</div>
</li>
<li class="level1"><div class="li"> <em>Удостоверьтесь, что последним символом в файле SPICE-модели является перевод строки.</em> Если перевода строки нет, то строка следующего компонента списка соединений может оказаться в той же строке, что была последней в файле SPICE-модели.</div>
</li>
</ul>

</div>
<!-- EDIT10 SECTION "Настройка файлов SPICE" [26572-28601] -->
<h2 class="sectionedit11"><a name="создание_схемы_своего_устройствасхемотехническое_проектирование" id="создание_схемы_своего_устройствасхемотехническое_проектирование">Создание схемы своего устройства: схемотехническое проектирование</a></h2>
<div class="level2">

<p>
<a href="geda-glossary.ru.html#схемотехническое_проектирование" class="wikilink1" title="geda-glossary.ru.html">Схемотехническое проектирование</a> — это процесс, в
котором используется специализированная чертёжная программа-редактор для
вычерчивания проектируемой схемы. В окружении gEDA для разработки
принципиальных схем используется программа <strong>gschem</strong>. Я предполагаю, что вы
уже знаете, как использовать <strong>gschem</strong>. Если нет, обратитесь к
документации, доступной на веб-сайте gEDA:
<a href="http://www.geda-project.org/" class="urlextern" title="http://www.geda-project.org/"  rel="nofollow">http://www.geda-project.org/</a>. Чтобы создать список соединений SPICE, вам
будет нужно прикрепить к компонентам необходимые атрибуты в <strong>gschem</strong> и,
возможно, включить в свой список соединений ещё и дополнительные директивы
SPICE. После завершения создания схемы вам будет нужно создать список
соединений SPICE, запустив для неё генератор списка соединений gEDA
<strong>gnetlist</strong>.
</p>

</div>
<!-- EDIT11 SECTION "Создание схемы своего устройства: схемотехническое проектирование" [28602-30052] -->
<h3 class="sectionedit12"><a name="атрибуты_gschem_для_создания_списков_соединений_spice" id="атрибуты_gschem_для_создания_списков_соединений_spice">Атрибуты gschem для создания списков соединений SPICE</a></h3>
<div class="level3">

<p>
В <strong>gschem</strong> есть несколько вариантов привязки атрибутов SPICE к
компонентам.  Вариант, который выберете вы, зависит от многих факторов, в
том числе от типа компонента, размера и формата SPICE-модели.
</p>

</div>
<!-- EDIT12 SECTION "Атрибуты gschem для создания списков соединений SPICE" [30053-30499] -->
<h3 class="sectionedit13"><a name="атрибуты_компонентов_и_их_значение" id="атрибуты_компонентов_и_их_значение">Атрибуты компонентов и их значение</a></h3>
<div class="level3">

<p>
Здесь приведены те атрибуты, что имеют значение при создании списков соединений SPICE и могут быть прикреплены к символам компонентов в <strong>gschem</strong>:
</p>
<ul>
<li class="level1"><div class="li"> <code>refdes</code>: позиционное обозначение компонента. Допустимые значения зависят от типа компонента и приведены в <a href="#приложение_a_поддерживаемые_компоненты_и_их_атрибуты" title="geda:csygas.ru &crarr;" class="wikilink1">Приложении A</a>;</div>
</li>
<li class="level1"><div class="li"> <code>value</code>: для пассивных компонентов — это значение физической величины компонента (сопротивления, индуктивности, ёмкости), для активных — это тип (номер модели) компонента (например, <em>2N3904</em>, <em>uA741</em>). Если модель активного компонента добавляется в схему как отдельный объект, в атрибуте <code>value</code> символа компонента должно быть указано её название;</div>
</li>
<li class="level1"><div class="li"> <code>model</code>: однострочная SPICE-модель компонента;</div>
</li>
<li class="level1"><div class="li"> <code>file</code>: имя файла. Обычно это файл, содержащий, например, <code>.MODEL</code>, <code>.SUBCKT</code>, или другой код SPICE;</div>
</li>
<li class="level1"><div class="li"> <code>model-name</code>: название SPICE-модели, вызываемой из оператора <code>.MODEL</code> или <code>.SUBCKT</code>. <code>model-name</code> используется главным образом для определения названия SPICE-модели в символе <em><code>spice-model-1.sym</code></em>. При привязке активного компонента к конкретной модели или к подсхеме её название должно вызываться из атрибута <code>device</code>, а не из <code>model-name</code>;</div>
</li>
<li class="level1"><div class="li"> <code>type</code>: Определяет тип компонента и используется в SPICE при интерпретации параметров модели. Допустимые значения зависят от моделируемого устройства.</div>
</li>
</ul>

</div>
<!-- EDIT13 SECTION "Атрибуты компонентов и их значение" [30500-32860] -->
<h3 class="sectionedit14"><a name="соглашения_по_позиционным_обозначениям" id="соглашения_по_позиционным_обозначениям">Соглашения по позиционным обозначениям</a></h3>
<div class="level3">

<p>
Для трактовки относящихся к SPICE атрибутов генератору списка соединений
нужно, чтобы к каждому компоненту схемы был прикреплён атрибут <code>refdes</code>.
Этот атрибут может устанавливаться либо вручную (что утомительно), либо с
помощью входящей в дистрибутив gEDA программы <strong>refdes_renum</strong>.
</p>

<p>
Учтите, что первые буквы <code>refdes</code> должны соответствовать буквам, указанным
в соглашении по позиционным обозначениям для SPICE-моделирования. Это
соглашение приведено в таблице 1 <a href="#приложение_a_поддерживаемые_компоненты_и_их_атрибуты" title="geda:csygas.ru &crarr;" class="wikilink1">приложения A</a>.
</p>

</div>
<!-- EDIT14 SECTION "Соглашения по позиционным обозначениям" [32861-33887] -->
<h3 class="sectionedit15"><a name="пассивные_компоненты" id="пассивные_компоненты">Пассивные компоненты</a></h3>
<div class="level3">

</div>

<h4><a name="базовые_пассивные_компоненты" id="базовые_пассивные_компоненты">Базовые пассивные компоненты</a></h4>
<div class="level4">

<p>
Наиболее часто в SPICE приходится иметь дело с базовыми пассивными компонентами, такими как резисторы и конденсаторы, которым кроме числовых значений никаких дополнительных атрибутов для моделирования не задаётся.  Для них должны быть заданы следующие атрибуты:
</p>
<ul>
<li class="level1"><div class="li"> <code>refdes</code>: точное позиционное обозначение компонента;</div>
</li>
<li class="level1"><div class="li"> <code>value</code>: для пассивных элементов это числовое значение физической величины компонента, а именно сопротивления, ёмкости или индуктивности (например, 100pF). Этот атрибут может задаваться и для активных компонентов, но если где-то в схеме нет атрибута <code>model</code>, атрибут <code>value</code> не используется (во всяком случае для создания списков соединений SPICE).</div>
</li>
</ul>

<p>
Если у компонента кроме <code>refdes</code> и <code>value</code> других атрибутов нет,
генератор списка соединений запишет в выходной файл только одну строку.
</p>

</div>

<h5><a name="примеррезистор" id="примеррезистор">Пример: резистор</a></h5>
<div class="level5">
<ul>
<li class="level1"><div class="li"> <code>refdes</code> = R2</div>
</li>
<li class="level1"><div class="li"> <code>value</code>  = 220</div>
</li>
</ul>

<p>
Результирующая строка SPICE: <strong><code>R2 0 4 220</code></strong><br/>

(обратите внимание, что «0» и «4» — это имена узлов подключенных к
компоненту соединений, генерируемые программой <strong>gnetlist</strong> автоматически.)
</p>

</div>

<h5><a name="примерконденсатор" id="примерконденсатор">Пример: конденсатор</a></h5>
<div class="level5">
<ul>
<li class="level1"><div class="li"> <code>refdes</code> = C22</div>
</li>
<li class="level1"><div class="li"> <code>value</code> = 1UF</div>
</li>
</ul>

<p>
Результирующая строка SPICE: <strong><code>C22 4 23 1UF</code></strong>
</p>

</div>

<h4><a name="пассивные_компоненты_с_дополнительными_атрибутами" id="пассивные_компоненты_с_дополнительными_атрибутами">Пассивные компоненты с дополнительными атрибутами</a></h4>
<div class="level4">

<p>
Часто при SPICE-моделировании для пассивных компонентов задаются дополнительные атрибуты. В качестве примера можно назвать атрибуты для задания температурных коэффициентов сопротивлений резисторов и исходного состояния для реактивных компонентов.  Чтобы включить эти атрибуты в результирующий файл SPICE, их нужно просто прописать как значение атрибута <code>model</code> компонента. Вот, собственно, перечень необходимых атрибутов:
</p>
<ul>
<li class="level1"><div class="li"> <code>refdes</code>: точное позиционное обозначение компонента;</div>
</li>
<li class="level1"><div class="li"> <code>value</code>: как всегда числовое значение физической величины компонента;</div>
</li>
<li class="level1"><div class="li"> <code>model</code>: одна строка дополнительных параметров в допустимом для SPICE формате.</div>
</li>
</ul>

<p>
Эта строка включается в генерируемую программой <strong>gnetlist</strong> строку для
компонента после значения его величины. Поэтому важно, чтобы строка значения
атрибута <code>model</code> задавалась в виде допустимого кода SPICE. Иначе вы
рискуете вызвать ругань программы моделирования.
</p>

</div>

<h5><a name="примеррезистор1" id="примеррезистор1">Пример: резистор</a></h5>
<div class="level5">
<ul>
<li class="level1"><div class="li"> <code>refdes</code> = R5</div>
</li>
<li class="level1"><div class="li"> <code>value</code> = 1MEG</div>
</li>
<li class="level1"><div class="li"> <code>model</code> = TC=0.001,0.015</div>
</li>
</ul>

<p>
Результирующая строка SPICE: <strong><code>R5 0 2 1MEG TC=0.001,0.015</code></strong>
</p>

</div>

<h4><a name="пассивные_компоненты_для_проектирования_полупроводников" id="пассивные_компоненты_для_проектирования_полупроводников">Пассивные компоненты для проектирования полупроводников</a></h4>
<div class="level4">

<p>
При разработке <a href="geda-glossary.ru.html#asic" class="wikilink1" title="geda-glossary.ru.html">ASIC</a> для определения параметров резисторов и конденсаторов часто используются их размеры. Программа SPICE берёт из технологической библиотеки типичное удельное значение физической величины и сама рассчитывает фактическое значение сопротивления или ёмкости соответственно в омах или фарадах. Поэтому в этом случае требуются следующие атрибуты:
</p>
<ul>
<li class="level1"><div class="li"> <code>refdes</code>: точное позиционное обозначение компонента;</div>
</li>
<li class="level1"><div class="li"> <code>model-name</code>: соответствует модели в технологической библиотеке;</div>
</li>
<li class="level1"><div class="li"> <code>w</code>, <code>l</code>: размеры устройства.</div>
</li>
</ul>

<p>
Технологическая библиотека должна быть подключена во входном файле SPICE
строкой <code>.include</code>.
</p>

</div>

<h5><a name="примерполупроводниковый_резистор" id="примерполупроводниковый_резистор">Пример: полупроводниковый резистор</a></h5>
<div class="level5">
<ul>
<li class="level1"><div class="li"> <code>refdes</code> = R6</div>
</li>
<li class="level1"><div class="li"> <code>model-name</code> = rpoly</div>
</li>
<li class="level1"><div class="li"> <code>w</code> = 3u</div>
</li>
<li class="level1"><div class="li"> <code>l</code> = 100u</div>
</li>
</ul>

<p>
Результирующая строка SPICE: <strong><code>R6 0 5 rpoly w=3u l=100u</code></strong>
</p>

</div>

<h5><a name="примермодель_полупроводникового_резистора" id="примермодель_полупроводникового_резистора">Пример: модель полупроводникового резистора</a></h5>
<div class="level5">
<ul>
<li class="level1"><div class="li"> <code>model rpoly R rsh=300</code></div>
</li>
</ul>

<p>
Это должно быть частью технологической библиотеки вашего поставщика ASIC.
</p>

</div>
<!-- EDIT15 SECTION "Пассивные компоненты" [33888-39620] -->
<h3 class="sectionedit16"><a name="транзисторы_и_диоды" id="транзисторы_и_диоды">Транзисторы и диоды</a></h3>
<div class="level3">

<p>
С транзисторами и диодами обычно идёт модель, специфичная для устройства.
Каждая модель должна представлять детальную нелинейную динамику конкретного
устройства, иначе моделирование теряет смысл. SPICE-модель может быть или в
виде краткого, однострочного описания, или в виде многострочного набора
параметров.  Типичным однострочным описанием является перечень параметров
для описания характеристик малосигнального диода. Типичные многострочные
модели поставляются поставщиками компонентов, которые для своих компонентов
часто предлагают текстовые файлы моделей. Так как для представления
информации в SPICE существует два широко распространённых формата, то
имеется и два подхода для включения этих параметров в схему:
</p>

</div>

<h4><a name="однострочное_описание_параметров_spice" id="однострочное_описание_параметров_spice">Однострочное описание параметров SPICE</a></h4>
<div class="level4">

<p>
Чтобы в список соединений включить однострочное описание параметров SPICE, к компоненту должны быть прикреплены следующие атрибуты:
</p>
<ul>
<li class="level1"><div class="li"> <code>refdes</code>: точное позиционное обозначение компонента;</div>
</li>
<li class="level1"><div class="li"> <code>value</code>: номер модели или тип (номер) прибора для компонента.</div>
</li>
<li class="level1"><div class="li"> <code>model-name</code>: желаемое название для данной SPICE-модели. Для компонента это обычно номер модели или тип (номер) прибора. Если вы уже прикрепили к компоненту атрибут <code>value</code>, этот параметр необязателен.</div>
</li>
<li class="level1"><div class="li"> <code>model</code>: одна строка, содержащая дополнительные параметры. Не помещайте параметры модели в скобки — <strong>gnetlist</strong> сам это сделает за вас.</div>
</li>
</ul>

</div>

<h5><a name="примердиод" id="примердиод">Пример: диод</a></h5>
<div class="level5">
<ul>
<li class="level1"><div class="li"> <code>refdes</code> = D5</div>
</li>
<li class="level1"><div class="li"> <code>model-name</code> = 1N1004</div>
</li>
<li class="level1"><div class="li"> <code>model</code> = IS=0.5UA RS=6 BV=5.20</div>
</li>
</ul>

<p>
Результирующая строка SPICE: <strong><code>D5 2 6 1N1004 MODEL 1N1004 D (IS=0.5UA RS=6
BV=5.20)</code></strong>
</p>

</div>

<h4><a name="файл_spice-модели" id="файл_spice-модели">Файл SPICE-модели</a></h4>
<div class="level4">

<p>
Чтобы включить в список соединений файл с параметрами SPICE, к компоненту должны быть прикреплены следующие атрибуты:
</p>
<ul>
<li class="level1"><div class="li"> <code>refdes</code>: точное позиционное обозначение компонента;</div>
</li>
<li class="level1"><div class="li"> <code>value</code>: номер модели или тип (номер) прибора для компонента.</div>
</li>
<li class="level1"><div class="li"> <code>model-name</code>: желаемое название для данной SPICE-модели. Для компонента это обычно номер модели или тип (номер) прибора. Если вы уже прикрепили к компоненту атрибут <code>value</code>, этот параметр необязателен.</div>
</li>
<li class="level1"><div class="li"> <code>file</code>: Имя файла той SPICE-модели, которую нужно включить в список соединений. Имя файла может быть задано в виде относительного или абсолютного пути, но во избежание проблем при возможном перемещении своего каталога со схемами лучше, вероятно, использовать абсолютный путь.</div>
</li>
</ul>

<p>
Учтите, вам следует убедиться, что в файле вашей SPICE-модели указано то же
самое название модели, что и в прикреплённых к компоненту атрибутах
<code>value</code> или <code>model-name</code>. К тому же неплохо бы проверить, что выводы в
файле SPICE-модели и в символе компонента имеют одинаковое назначение.
</p>

</div>
<!-- EDIT16 SECTION "Транзисторы и диоды" [39621-44150] -->
<h3 class="sectionedit17"><a name="активные_компоненты_-_интегрированные_схемы" id="активные_компоненты_-_интегрированные_схемы">Активные компоненты - интегрированные схемы</a></h3>
<div class="level3">

<p>
Интегрированные схемы включаются в список соединений подобно транзисторам и
диодам. Фактически код SPICE можно включать или как однострочное описание
параметров или в виде файла модели.
</p>

</div>

<h4><a name="однострочное_описание_параметров_spice1" id="однострочное_описание_параметров_spice1">Однострочное описание параметров SPICE</a></h4>
<div class="level4">

<p>
Для включения в список соединений однострочного описания параметров SPICE к компоненту должны быть прикреплены следующие атрибуты:
</p>
<ul>
<li class="level1"><div class="li"> <code>refdes</code>: точное позиционное обозначение компонента;</div>
</li>
<li class="level1"><div class="li"> <code>value</code>: номер модели или тип (номер) прибора для компонента.</div>
</li>
<li class="level1"><div class="li"> <code>model-name</code>: желаемое название для данной SPICE-модели. Для компонента это обычно номер модели или тип (номер) прибора. Если вы уже прикрепили к компоненту атрибут <code>value</code>, этот параметр необязателен.</div>
</li>
<li class="level1"><div class="li"> <code>model</code>: одна строка, содержащая дополнительные параметры. Не помещайте параметры модели в скобки — <strong>gnetlist</strong> сам это сделает за вас.</div>
</li>
</ul>

</div>

<h4><a name="spice-модель_model_или_файл_subckt" id="spice-модель_model_или_файл_subckt">SPICE-модель .MODEL или файл .SUBCKT</a></h4>
<div class="level4">

<p>
Для включения в список соединений файла описания параметров SPICE к компоненту должны быть прикреплены следующие атрибуты:
</p>
<ul>
<li class="level1"><div class="li"> <code>refdes</code>: точное позиционное обозначение компонента; <em>обратите внимание, что если файл содержит </em><code>.MODEL</code><em>, </em><code>refdes</code><em> должно начинаться с <strong>U</strong>; если файл содержит </em><code>.SUBCKT</code><em>, </em><code>refdes</code><em> должно начинаться с <strong>X</strong>.</em> Генератор списка соединений  проверяет тип файла и пытается обработать его правильно, но если вы не следуете этому правилу, могут возникнуть проблемы.</div>
</li>
<li class="level1"><div class="li"> <code>value</code>: номер модели или тип (номер) прибора для компонента.</div>
</li>
<li class="level1"><div class="li"> <code>model-name</code>: желаемое название для данной SPICE-модели. Для компонента это обычно номер модели или тип (номер) прибора. Если вы уже прикрепили к компоненту атрибут <code>value</code>, этот параметр необязателен.</div>
</li>
<li class="level1"><div class="li"> <code>file</code>: имя файла содержащего <code>.MODEL</code> или <code>.SUBCKT</code>, который нужно включить в список соединений. Имя файла может быть задано в виде относительного или абсолютного пути, но во избежание проблем при возможном перемещении своего каталога со схемами, вероятно, лучше использовать абсолютный путь.</div>
</li>
</ul>

<p>
Учтите, вам следует убедиться, что в файле вашей SPICE-модели указано то же
самое название модели, что и в прикреплённых к компоненту атрибутах
<code>value</code> или <code>model-name</code>. К тому же неплохо бы проверить, что выводы в
файле SPICE-модели и в символе компонента имеют одинаковое назначение.
</p>

</div>
<!-- EDIT17 SECTION "Активные компоненты - интегрированные схемы" [44151-48112] -->
<h3 class="sectionedit18"><a name="независимые_источники" id="независимые_источники">Независимые источники</a></h3>
<div class="level3">

<p>
Есть два вида независимых источников: источники напряжения и источники тока.  Оба типа включаются в список соединений SPICE одинаково. Для включения в свой список соединений независимого источника нужно сделать следующее:
</p>
<ol>
<li class="level1"><div class="li"> Поместить независимый источник в свою схему. (Выберите <strong><em>Добавить</em></strong> → <strong><em>Компонент</em></strong> → <em><code>spice</code></em> → <em><code>&lt;имя независимого источника&gt;.sym</code></em>)</div>
</li>
<li class="level1"><div class="li"> Дважды щёлкнуть по блоку и добавить/отредактировать следующие атрибуты:</div>
<ul>
<li class="level2"><div class="li"> <code>refdes</code>: <em>V?</em> или <em>I?</em>;</div>
</li>
<li class="level2"><div class="li"> <code>value</code>: однострочное описание источника в формате SPICE.</div>
</li>
</ul>
</li>
</ol>

</div>
<!-- EDIT18 SECTION "Независимые источники" [48113-49097] -->
<h3 class="sectionedit19"><a name="зависимые_источники" id="зависимые_источники">Зависимые источники</a></h3>
<div class="level3">

<p>
Есть четыре зависимых источника:
</p>
<ul>
<li class="level1"><div class="li"> источник напряжения, управляемый током       («current controlled voltage source», CCVS);</div>
</li>
<li class="level1"><div class="li"> источник тока, управляемый током             («current controlled current source», CCCS);</div>
</li>
<li class="level1"><div class="li"> источник напряжения, управляемый напряжением («voltage controlled voltage source», VCVS);</div>
</li>
<li class="level1"><div class="li"> источник тока, управляемый напряжением       («voltage controlled current source», VCCS).</div>
</li>
</ul>

<p>
Все они включаются в список соединений SPICE одинаково. Для
включения источника в список соединений SPICE нужно сделать
следующее:
</p>
<ol>
<li class="level1"><div class="li"> Поместить зависимый источник в свою схему. (Выберите <strong><em>Добавить</em></strong> → <strong><em>Компонент</em></strong> → <em><code>spice</code></em> → <em><code>&lt;имя зависимого источника&gt;.sym</code></em>). Для этого подойдут символы с именами, являющимися сокращениями типа источника (то есть <strong>ccvs-1.sym</strong>, <strong>cccs-1.sym</strong>, <strong>vcvs-1.sym</strong> и <strong>vccs-1.sym</strong>).</div>
</li>
<li class="level1"><div class="li"> Дважды щёлкнуть по блоку и добавить/отредактировать следующие атрибуты:</div>
<ul>
<li class="level2"><div class="li"> <code>refdes</code>: <em>H?</em>, <em>F?</em>, <em>E?</em> или <em>G?</em>. Правильные префиксы <code>refdes</code>, соответствующие данным типам источников, перечислены в <a href="#приложение_a_поддерживаемые_компоненты_и_их_атрибуты" title="geda:csygas.ru &crarr;" class="wikilink1">приложении A</a>;</div>
</li>
<li class="level2"><div class="li"> <code>value</code>: однострочное описание источника в формате SPICE. Обычно атрибут <code>value</code> представляет собой коэффициент усиления источника в соответствующих его типу единицах измерения.</div>
</li>
</ul>
</li>
</ol>

</div>
<!-- EDIT19 SECTION "Зависимые источники" [49098-51224] -->
<h3 class="sectionedit20"><a name="нуллор" id="нуллор">Нуллор</a></h3>
<div class="level3">

<p>
<a href="http://en.wikipedia.org/wiki/nullor" class="interwiki iw_wp" title="http://en.wikipedia.org/wiki/nullor">Нуллор</a> - это идеальный элемент, состоящий из <em>нуллатора</em> и
<em>норатора</em>, имеющий нулевое входное и бесконечное выходное сопротивление,
бесконечные коэффициенты усиления по току и напряжению, бесконечные
проходную проводимость и передаточное сопротивление и параметры передачи
равные нулю.  Нуллор является универсальным активным элементом, то есть в
идеале с его помощью можно реализовать любые линейные или нелинейные функции
при наличии подходящего набора линейных и нелинейных пассивных элементов.  В
частности с помощью нуллора, резисторов и конденсаторов формируется полный
набор линейных схем.
</p>

<p>
Нуллор в зависимости от схемы включения может использоваться для анализа или
синтеза реальных схем, что достигается заменой реальных операционных
усилителей, токовых конвейеров, усилительных триодов (ламп или транзисторов)
нуллорами и небольшим набором пассивных элементов, отражающих их параметры.
Идеальные транзисторы на основе нуллора успешно используются в моделировании
по переменному току для синтеза различных составных транзисторных схем и
составных транзисторов.  Схемы с операционными усилителями на базе нуллора
используются для реализаций фильтров.  Существуют также методики для
верификации, автоматической диагностики ошибок, автоматической настройки
смещения в аналоговых схемах и т. д.
</p>

</div>

<h4><a name="нуллор_в_spice" id="нуллор_в_spice">Нуллор в SPICE</a></h4>
<div class="level4">

<p>
При отсутствии модели нуллора в программе моделирования общего назначения
нуллор можно смоделировать с помощью <a href="#зависимые_источники" title="geda:csygas.ru &crarr;" class="wikilink1">зависимого
источника</a> с большим значением коэффициента усиления, например
10<sup>9</sup>. Тип зависимого источника (ИНУН, ИТУН, ИНУТ или ИТУТ)
выбирается в зависимости от оцениваемого входного сигнала, напряжения или
тока и нужного выходного сигнала. Управляемый источник с бесконечным
усилением любого из указанных четырёх типов зависимых источников
представляет собой эквивалент нуллора.
</p>

<p>
Трёх-выводной нуллор может использоваться для моделирования по переменному
току <em>идеальных транзисторов</em> и других <em>триодов</em>.  <em>Идеальный
операционный усилитель</em> реализуется с помощью источника напряжения,
управляемого напряжением, с бесконечным (фактически, достаточно большим)
коэффициентом усиления.  Токовый конвейер (CCII) является эквивалентом
трёх-выводного нуллора.
</p>

<p>
Обычно нуллор используется для моделирования в малосигнальном частотном
анализе (в частотном домене).  При наличии отрицательной обратной связи
нуллор может использоваться как идеальный операционный усилитель даже для
выполнения временного анализа (см. <a href="#пример_схемы_-_сумматор" title="geda:csygas.ru &crarr;" class="wikilink1">пример</a>
ниже).
</p>

</div>

<h4><a name="нуллор_в_geda" id="нуллор_в_geda">Нуллор в gEDA</a></h4>
<div class="level4">

<p>
В <strong>ngspice</strong> и <strong>gnucap</strong> специальной модели для нуллора нет.
Поэтому в качестве нуллора в spice-sdb используется ИНУН с
высоким коэффициентом усиления.
</p>

<p>
Для включения нуллора в список соединений SPICE нужно сделать следующее:
</p>
<ol>
<li class="level1"><div class="li"> Поместить нуллор в свою схему. (Выберите <strong><em>Добавить</em></strong> → <strong><em>Компонент</em></strong> → <strong><em>spice</em></strong> → <strong>nullor-1.sym</strong>).</div>
</li>
<li class="level1"><div class="li"> Дважды щёлкнуть по блоку и добавить/отредактировать следующие атрибуты:</div>
<ul>
<li class="level2"><div class="li"> <code>refdes</code>: N?</div>
</li>
<li class="level2"><div class="li"> <code>value</code>: задаётся коэффициент усиления нуллора по напряжению, обычно 1000Meg (необязателен с версии geda-gaf 1.9.2).</div>
</li>
</ul>
</li>
</ol>

</div>

<h5><a name="примернуллор" id="примернуллор">Пример: нуллор</a></h5>
<div class="level5">
<ul>
<li class="level1"><div class="li"> <code>refdes=N1</code></div>
</li>
<li class="level1"><div class="li"> <code>value=1000Meg</code></div>
</li>
</ul>

<p>
Результирующие строки SPICE:
</p>
<pre class="code">E_N1 1 2 3 4 1000Meg
IMeasure_N1 3 4 dc 0
IOut_N1 1 2 dc 0</pre>

<p>
Этот код содержит:
</p>
<ul>
<li class="level1"><div class="li"> управляемый источник напряжения E_N1;</div>
</li>
<li class="level1"><div class="li"> источник тока, измеряющий напряжение IMeasure_N1;</div>
</li>
<li class="level1"><div class="li"> выходной источник тока IOut_N1.</div>
</li>
</ul>

<p>
Таким образом код нуллора в <strong>gnet-spice-sdb</strong> —  это просто зависимый от
напряжения источник напряжения, на входе и на выходе которого стоят нулевые
источники тока для предотвращения отказа в работе программы моделирования,
когда вход или выход нуллора ни к чему не подключены.
</p>

<p>
Примечание: в результате экспериментов я (vzh) обнаружил, что наличие или
отсутствие этих источников никак не влияет на моделирование и не решает
поставленной задачи для современной версии <strong>ngspice</strong>. В случае, когда вход
или выход нуллора является плавающим, то есть не имеет какого-либо
соединения с землёй, <strong>ngspice</strong> всё же выдаст ошибку.  Для устранения
ошибки можно подключить одну из этих входных или выходных точек к земле
через высокоомный резистор.  <strong>gnucap</strong> всегда правильно обсчитывает нуллор,
но в таком случае на не связанных с землёй узлах будет произвольно
меняющееся большое напряжение, так что измерять необходимо не потенциал
отдельных узлов относительно земли, а именно напряжение на входе или выходе
нуллора.
</p>

<p>
Если нужен нуллор с другим типом чувствительности, его можно сделать на
основе символа любого из управляемых источников (одного из
<em><code>vcvs-1.sym</code></em>, <em><code>vccs-1.sym</code></em>, <em><code>cccs-1.sym</code></em>,
<em><code>ccvs-1.sym</code></em>), просто установив достаточно большое значение атрибута
<code>value</code>, скажем, «1000Meg».
</p>

</div>

<h4><a name="пример_схемы_-_сумматор" id="пример_схемы_-_сумматор">Пример схемы - сумматор</a></h4>
<div class="level4">

<p>
В данном примере нуллор используется в качестве модели идеального
операционного усилителя.
</p>

<p>
<a href="media/geda/summing.png?id=geda%3Acsygas.ru" class="media" title="geda:summing.png"><img src="media/geda/summing.png" class="mediacenter" alt="" /></a>
</p>

<p>
Файл схемы для <strong>gschem</strong>: <a href="media/geda/summing.sch" class="media mediafile mf_sch" title="geda:summing.sch">summing.sch</a>
</p>

<p>
Командный файл для моделирования в <strong>gnucap</strong> и/или <strong>ngspice</strong>:
</p>
<dl class="file">
<dt><a href="_export/code/geda:csygas.ru?codeblock=0" title="Download Snippet" class="mediafile mf_cmd">summing.cmd</a></dt>
<dd><pre class="code file spice">.print tran v(nodes)
.tran .0001 1 0 &gt;summing.dat</pre>
</dd></dl>

<p>
Обратите внимание на часть строки <code>&gt;summing.dat</code> в командном файле. Она
игнорируется программой <strong>ngspice</strong>, в то время как <strong>gnucap</strong> использует её
для вывода данных в указанный файл в пакетном режиме (при использовании
перенаправления командной оболочки выходные данные были бы выведены вместе
со строками приглашения <strong>gnucap</strong>, что нам не нужно.
</p>

<p>
Команда для создания списка соединений (обратите внимание на ключ <code>sort_mode</code>, он необходим,
чтобы программа <strong>gnucap</strong> работала правильно):
</p>
<pre class="code">gnetlist -g spice-sdb -O sort_mode -o summing.net summing.sch</pre>

<p>
Команда для моделирования с помощью <strong>ngspice</strong>:
</p>
<pre class="code">ngspice -b -r summing.dat summing.net</pre>

<p>
Команда для моделирования с помощью <strong>gnucap</strong>:
</p>
<pre class="code">gnucap -b summing.net</pre>

<p>
Команда для просмотра полученных сигналов:
</p>
<pre class="code">gwave summing.dat</pre>

</div>
<!-- EDIT20 SECTION "Нуллор" [51225-61286] -->
<h3 class="sectionedit21"><a name="компоненты_spice" id="компоненты_spice">Компоненты SPICE</a></h3>
<div class="level3">

</div>

<h4><a name="блок_spice-модели" id="блок_spice-модели">Блок SPICE-модели</a></h4>
<div class="level4">

<p>
В некоторых случаях может быть желательно внедрить блок SPICE-модели
непосредственно в схему. Это можно сделать, когда у вас есть несколько
устройств с атрибутами <code>value</code>, в которых вызывается одна и та же
SPICE-модель. В зависимости от того, является ли блок SPICE однострочным или
многострочным, код можно встроить одним из двух способов:
</p>

</div>

<h5><a name="однострочная_spice-модель" id="однострочная_spice-модель">Однострочная SPICE-модель</a></h5>
<div class="level5">
<ol>
<li class="level1"><div class="li"> Поместите блок SPICE-модели в свою схему. (Выберите <strong><em>Добавить</em></strong> → <strong><em>Компонент</em></strong> → <em><code>spice</code></em> → <em><code>spice-model-1.sym</code></em>)</div>
</li>
<li class="level1"><div class="li"> Дважды щёлкните по блоку и добавьте/отредактируйте следующие атрибуты:</div>
<ul>
<li class="level2"><div class="li"> <code>refdes</code>: A?</div>
</li>
<li class="level2"><div class="li"> <code>model-name</code>: название модели (т. е. название, задаваемое в компонентах, работа которых будет моделироваться)</div>
</li>
<li class="level2"><div class="li"> <code>type</code>: один из допустимых типов компонентов, определённых в спецификации SPICE.</div>
</li>
<li class="level2"><div class="li"> <code>model</code>: соответствующая однострочная SPICE-модель.</div>
</li>
</ul>
</li>
</ol>

</div>

<h5><a name="многострочная_spice-модель" id="многострочная_spice-модель">Многострочная SPICE-модель</a></h5>
<div class="level5">
<ol>
<li class="level1"><div class="li"> Поместите блок SPICE-модели в свою схему. (Выберите <strong><em>Добавить</em></strong> → <strong><em>Компонент</em></strong> → <em><code>spice</code></em> → <em><code>spice-model-1.sym</code></em>)</div>
</li>
<li class="level1"><div class="li"> Дважды щёлкните по блоку и добавьте/отредактируйте следующие атрибуты:</div>
<ul>
<li class="level2"><div class="li"> <code>refdes</code>: A?</div>
</li>
<li class="level2"><div class="li"> <code>model-name</code>: название модели</div>
</li>
<li class="level2"><div class="li"> <code>file</code>: имя файла, содержащего код SPICE-модели (т. е. <code>.MODEL</code> или <code>.SUBCKT</code>).</div>
</li>
</ul>
</li>
</ol>

</div>

<h4><a name="блок_включения" id="блок_включения">Блок включения</a></h4>
<div class="level4">

<p>
Блок включения добавляет в список соединений директиву <code>.INCLUDE</code>.
</p>
<ol>
<li class="level1"><div class="li"> Поместите блок SPICE-модели в свою схему. (Выберите <strong><em>Добавить</em></strong> → <strong><em>Компонент</em></strong> → <em><code>spice</code></em> → <em><code>spice-include-1.sym</code></em>)</div>
</li>
<li class="level1"><div class="li"> Дважды щёлкните по блоку и добавьте/отредактируйте следующие атрибуты:</div>
<ul>
<li class="level2"><div class="li"> <code>refdes</code>: A?</div>
</li>
<li class="level2"><div class="li"> <code>file</code>: имя подключаемого файла.</div>
</li>
</ul>
</li>
</ol>

</div>

<h4><a name="блок_директивы_spice" id="блок_директивы_spice">Блок директивы SPICE</a></h4>
<div class="level4">

<p>
При наличии в схеме блока директивы, в списке соединений создаётся специальный блок кода SPICE. Директивой может подключаться либо файл с операторами, либо строка, содержащаяся в атрибуте <code>value</code>. Генератор списка соединений выводит содержимое строки или файла в список соединений дословно. Подходящими примерами использования директивы является подключение следующих операторов:
</p>
<ul>
<li class="level1"><div class="li"> .TEMP</div>
</li>
<li class="level1"><div class="li"> .IC</div>
</li>
<li class="level1"><div class="li"> и других операторов SPICE, для которых в <strong>gschem</strong> нет символов.</div>
</li>
</ul>

<p>
Для добавления в схему директивы SPICE, сделайте следующее:
</p>
<ol>
<li class="level1"><div class="li"> Поместите блок директивы в свою схему. (Выберите <strong><em>Добавить</em></strong> → <strong><em>Компонент</em></strong> → <em><code>spice</code></em> → <em><code>spice-directive-1.sym</code></em>)</div>
</li>
<li class="level1"><div class="li"> Дважды щёлкните по блоку и добавьте/отредактируйте следующие атрибуты:</div>
<ul>
<li class="level2"><div class="li"> <code>refdes</code>: A?</div>
</li>
<li class="level2"><div class="li"> <code>file</code>: имя подключаемого файла.</div>
</li>
</ul>
</li>
</ol>

</div>
<!-- EDIT21 SECTION "Компоненты SPICE" [61287-65343] -->
<h3 class="sectionedit22"><a name="работа_с_иерархическими_моделями" id="работа_с_иерархическими_моделями">Работа с иерархическими моделями</a></h3>
<div class="level3">

<p>
При SPICE-моделировании часто возникают ситуации, когда хочется представить
схему какого-либо конкретного компонента в виде <em><code>.SUBCKT</code></em>, а затем
внедрить модель этого компонента в основную схему. Приведём довольно
распространённый пример. Допустим, при моделировании СВЧ-схемы вы решили
использовать такую модель конденсатора, которая содержит не только ёмкость,
но и паразитные индуктивности и сопротивления. Производители конденсаторов
часто поставляют схемы, отражающие схемную топологию имеющихся паразитных
элементов, и указывают значения соответствующих сопротивлений и
индуктивностей. И вам бы хотелось начертить модель такого конденсатора в
<strong>gschem</strong>, создать с помощью генератора списка соединений файл
<em><code>.SUBCKT</code></em>, а затем использовать этот файл для моделирования процессов
в основной схеме.
</p>

<p>
Поскольку такого рода задачи при SPICE-моделировании являются довольно обычными, то теперь их можно выполнять и с помощью <strong>gnet-spice-sdb</strong> (начиная с версии 20030331).  Для создания файла <em><code>.SUBCKT</code></em> подсхемы и использования его в основной схеме нужно сделать следующее:
</p>
<ol>
<li class="level1"><div class="li"> Начертите в <strong>gschem</strong> подсхему компонента (например, конденсатор + паразитные элементы).</div>
</li>
<li class="level1"><div class="li"> Добавьте в неё блок <code>spice-subcircuit-LL</code> (<em><code>spice-subcircuit-LL-1.sym</code></em>). Этим самым генератору списка соединений указывается, что эта схема является подсхемой для создания <em><code>.SUBCKT</code></em>. Прикрепите к символу блока атрибут:</div>
<ul>
<li class="level2"><div class="li"> <code>model-name</code> = <em>cap_with_parasitics</em><br/>
(Конечно, <em>cap_with_parasitics</em> — это просто пример. В своей схеме задайте название своей модели.) Тогда при создании файла списка соединений символ блока заставит генератор первой строкой туда вставить: <code>.SUBCKT cap_with_parasitics</code>.</div>
</li>
</ul>
</li>
<li class="level1"><div class="li"> В подсхеме к каждому из соединений ввода/вывода (т. е. к соединениям с основной схемой) подключите символ <code>spice-subcircuit-IO</code> (<em><code>spice-subcircuit-IO-1.sym</code></em>). Пронумеруйте позиционные обозначения символов ввода/вывода в таком порядке, в каком соединения ввода/вывода должны перечисляться в строке <code>.SUBCKT</code> выходного файла (т. е. P1 — для первого, P2 — для второго и т. д.).</div>
</li>
<li class="level1"><div class="li"> Когда вы закончите с подсхемой, нужно будет обычным способом создать список соединений. Например, если ваша схема называется <em><code>cap_with_parasitics.sch</code></em>, список соединений для неё создаётся командой: <pre class="code">gnetlist -g spice-sdb -o cap_with_parasitics.cir cap_with_parasitics.sch</pre>

<p>
 При этом список соединений SPICE будет записан в файл <em><code>cap_with_parasitics.cir</code></em>. Внимательно просмотрите этот файл и убедитесь, что список соединений создан правильно.
</p>
</div>
</li>
<li class="level1"><div class="li"> Затем для основной схемы создайте символ, который будет указывать на <em><code>.SUBCKT</code></em>. Обратите внимание, что позиционное обозначение данного символа должно начинаться с буквы <em>X</em>. Чтобы обеспечить это, сделайте следующее:</div>
<ul>
<li class="level2"><div class="li"> Начертите символ в <strong>gschem</strong>. Обычно, чтобы символ модели отличался от обычных компонентов, я черчу вокруг него прямоугольник. Если хотите, можете отметить его по-другому.</div>
</li>
<li class="level2"><div class="li"> Обеспечьте, чтобы выводы в этом символе и в <em><code>.SUBCKT</code></em> были перечислены в одинаковом порядке. Это делается редактированием символа в текстовом редакторе и установкой атрибутов <code>pinseq</code>. Генератор списка соединений выведет выводы в порядке, заданном в этих атрибутах.</div>
</li>
<li class="level2"><div class="li"> В текстовом редакторе установите для символа атрибут <code>device</code>, например, <em>capacitor-model</em>. <strong>Не</strong> задавайте в этом атрибуте ни один из тех типов компонентов, что поддерживаются в SPICE и перечислены в <a href="#приложение_a_поддерживаемые_компоненты_и_их_атрибуты" title="geda:csygas.ru &crarr;" class="wikilink1">приложении</a>! Ваша цель — сделать особый символ, позиционное обозначение <code>refdes</code> которого начинается с <em>X</em>, а если же в <code>device</code> указан тип, распознаваемый в SPICE, этой цели не достичь.</div>
</li>
<li class="level2"><div class="li"> В текстовом редакторе установите значение атрибута позиционного обозначения символа <code>refdes</code> в <em>X?</em>.</div>
</li>
</ul>
</li>
<li class="level1"><div class="li"> Создайте основную схему. Добавьте свой новый символ в схему столько раз, сколько нужно, и разведите соединения обычным способом.</div>
</li>
<li class="level1"><div class="li"> Чтобы символ указывал на подсхему <em><code>.SUBCKT</code></em>, дважды щёлкните по нему и установите следующие атрибуты:</div>
<ul>
<li class="level2"><div class="li"> <code>file</code> = <em>cap_with_parasitics.cir</em></div>
</li>
<li class="level2"><div class="li"> <code>model-name</code> = <em>cap_with_parasitics</em><br/>
а также другие необходимые атрибуты (например, <code>refdes</code>).</div>
</li>
</ul>
</li>
<li class="level1"><div class="li"> Теперь создайте список соединений для своей основной схемы обычным способом. Содержимое каждого файла <em><code>.SUBCKT</code></em> будет записано в основной список соединений. Откройте полученный файл в текстовом редакторе и внимательно проверьте, что список соединений создан правильно. Особое внимание обратите на следующее:</div>
<ul>
<li class="level2"><div class="li"> Проверьте, что соединения, подключающие <em><code>.SUBCKT</code></em> подсхемы к основному списку соединений, перечислены в правильном порядке.</div>
</li>
<li class="level2"><div class="li"> Убедитесь, что и в основной схеме, и в подсхеме (в строке объявления <code>.SUBCKT</code>) используется одно и то же название модели.</div>
</li>
</ul>
</li>
</ol>

<p>
Как только список соединений готов, вы тотчас же можете начать моделирование
своего проекта любой предпочитаемой программой
SPICE-моделирования. Некоторые из работающих в Linux программ описаны ниже.
</p>

</div>
<!-- EDIT22 SECTION "Работа с иерархическими моделями" [65344-73842] -->
<h2 class="sectionedit23"><a name="создание_списка_соединений_spice" id="создание_списка_соединений_spice">Создание списка соединений SPICE</a></h2>
<div class="level2">

</div>
<!-- EDIT23 SECTION "Создание списка соединений SPICE" [73843-73911] -->
<h3 class="sectionedit24"><a name="использование_gnetlist" id="использование_gnetlist">Использование gnetlist</a></h3>
<div class="level3">

<p>
Когда схема начерчена, список соединений SPICE можно создать с помощью
программы gEDA <strong>gnetlist</strong>, запустив её из командной строки и задав в
качестве аргументов имена файлов схем.  <strong>gnetlist</strong> сконструирована из двух
частей: оболочки — процессора, написанного на C, читающего файл
<em><code>.sch</code></em> и создающего из него внутреннее, общее представление проекта, и
драйверов на Scheme — генераторов списков соединений. С такой архитектурой
<strong>gnetlist</strong> является очень гибко настраиваемой программой — с помощью
разных драйверов на Scheme производятся списки соединений в разных
форматах. Красота этой схемы (намеренный каламбур) в том, что пользователи
gEDA легко могут и сами написать подходящие генераторы списков соединений
для своих собственных нужд. Файл драйвера на Scheme, с реализацией
усовершенствованного создания списков соединений SPICE, называется
<em><code>gnet-spice-sdb.scm</code></em> и находится в каталоге
<em><code>${PREFIX}/geda/share/gEDA/scheme</code></em>.
</p>

<p>
Из командной строки вызов драйвера <strong>spice-sdb</strong> для
<strong>gnetlist</strong> производится следующим образом:
</p>
<pre class="code">gnetlist [OPTIONS] -g spice-sdb filename1 ... filenameN</pre>

<p>
Помимо прочих ключей, описанных в
Руководстве пользователя gnetlist,
в <strong>gnetlist</strong> поддерживаются специфические, драйверо-зависимые ключи.
Специфический ключ драйвера может быть включен с помощью задания <code>-O
КЛЮЧ</code>. Драйвером <strong>spice-sdb</strong> поддерживаются следующие дополнительные
ключи:
</p>
<ul>
<li class="level1"><div class="li"> <code>include_mode</code>: записывать в выходной файл <code>.INCLUDE &lt;filename&gt;</code> вместо содержимого файла модели;</div>
</li>
<li class="level1"><div class="li"> <code>embedd_mode</code>: внедрять содержимое указанных в <code>.include</code> файлов в список соединений;</div>
</li>
<li class="level1"><div class="li"> <code>nomunge_mode</code>: не производить автоматическую корректировку позиционных обозначений компонентов;</div>
</li>
<li class="level1"><div class="li"> <code>sort_mode</code>: сортировать выходной список соединений.</div>
</li>
</ul>

</div>
<!-- EDIT24 SECTION "Использование gnetlist" [73912-76908] -->
<h3 class="sectionedit25"><a name="создание_списка_соединений_при_помощи_gnetlist_и_spice-sdb" id="создание_списка_соединений_при_помощи_gnetlist_и_spice-sdb">Создание списка соединений при помощи gnetlist и spice-sdb</a></h3>
<div class="level3">

<p>
Создать список соединений SPICE из схемы довольно просто. Для этого сделайте следующее:
</p>
<ul>
<li class="level1"><div class="li"> Сохраните свою схему в <em><code>filename.sch</code></em>.</div>
</li>
<li class="level1"><div class="li"> Создайте список соединений SPICE, запустив <strong><code>gnetlist -g spice-sdb filename.sch</code></strong>. Список соединений будет выведен в файл <em><code>output.net</code></em>. Кроме того, с помощью ключа <code>-o</code> можно задать другое имя выходного файла. Например, при задании такой команды: <pre class="code">gnetlist -g spice-sdb -o amplifier.cir amplifier.sch</pre>

<p>
 схема будет взята из файла <em><code>amplifier.sch</code></em>, а список соединений SPICE будет записан в файл <em><code>amplifier.cir</code></em>.
</p>
</div>
</li>
<li class="level1"><div class="li"> Откройте свой список соединений в текстовом редакторе и внимательно просмотрите. Проверьте, не отсутствуют ли какие-либо атрибуты и нет ли каких-либо других проблем.</div>
</li>
</ul>

</div>
<!-- EDIT25 SECTION "Создание списка соединений при помощи gnetlist и spice-sdb" [76909-78202] -->
<h3 class="sectionedit26"><a name="обычные_проблемы_при_создании_списков_соединений" id="обычные_проблемы_при_создании_списков_соединений">Обычные проблемы при создании списков соединений</a></h3>
<div class="level3">

<p>
Здесь мы попытаемся перечислить наиболее общие проблемы, возникающие при создании списков соединений и соответствующие решения:
</p>
<ul>
<li class="level1"><div class="li"> ERROR_INVALID_<acronym title="Personal Identification Number">PIN</acronym>:<br/>
Эта ошибка может появиться, если последовательность номеров, заданных в атрибутах <code>pinseq</code> символа, не начинается с 1 или в ней имеются пропуски. Это можно починить, отредактировав такой символ в текстовом редакторе.</div>
</li>
<li class="level1"><div class="li"> ERROR: In procedure caddr:<br/>
Это весьма распространённая ошибка. Обычно она появляется в том случае, когда вы забыли добавить один из обязательных атрибутов. Чтобы локализовать проблему, попробуйте запустить <strong>gnetlist</strong> в режиме подробного вывода (<strong><code>gnetlist -v -g spice-sdb filename.sch</code></strong>). Тогда генератор списка соединений остановит обработку на компоненте с пропущенным атрибутом и выдаст ошибку. Определив таким образом компонент-нарушитель, вы можете заново открыть схему в <strong>gschem</strong> и поправить атрибуты.</div>
</li>
</ul>

<p>
Наконец, помните, что прежде, чем использовать свой список соединений SPICE
для моделирования, важно внимательно его проверить. Имейте в виду, что
данный генератор списка соединений всё ещё находится в стадии «бета-версии»
и какие-то проблемы с созданием списков соединений возможно ещё имеются.
</p>

</div>
<!-- EDIT26 SECTION "Обычные проблемы при создании списков соединений" [78203-80375] -->
<h2 class="sectionedit27"><a name="spice-моделирование" id="spice-моделирование">SPICE-моделирование</a></h2>
<div class="level2">

<p>
Для SPICE-моделирования в GNU/Linux есть несколько вариантов, я отмечу три:
</p>
<ul>
<li class="level1"><div class="li"> <strong>LTSpice</strong> — свободная (freeware) программа SPICE-моделирования, изначально выпущенная в Linear Technologies как инструмент для выбора/проектирования компонентов для платформы Windows. Благодаря очень быстрому и мощному SPICE-процессору она стала популярной в среде любителей и инженеров-проектировщиков, предпочитающих использовать свободные средства. Исходно <strong>LTSpice</strong> была написана для Windows, но затем немного изменена для запуска в GNU/Linux с помощью <strong>wine</strong>; если вам нужна мощная программа SPICE-моделирования профессионального качества, рекомендую пользоваться ею.</div>
</li>
<li class="level1"><div class="li"> <strong>ngspice</strong> — «официальная» программа SPICE-моделирования в gEDA Suite. Программа <strong>ngspice</strong> — это возрождение кода <strong>SPICE 3</strong> в Linux. Она предоставляет SPICE-процессор для моделирования, оболочку, управляемую из командной строки, и возможность графического вывода результатов моделирования в <strong>X Window System</strong>. <strong>ngspice</strong> — это программа с открытым исходным кодом, написанная для Linux. Это программа SPICE для тех, кто хочет без труда заниматься моделированием в Linux или программированием и улучшением кода SPICE.</div>
</li>
<li class="level1"><div class="li"> <strong>tclspice</strong> — ответвление разработки <strong>ngspice</strong>. <strong>tclspice</strong> представляет собой расширенный вариант <strong>ngspice</strong>, в котором (в теории) набор команд SPICE экспортируется в <acronym title="Application Programming Interface">API</acronym> языка Tcl, позволяя встраивать SPICE-анализ в программы на Tcl. Среди прочего это полезно для автоматизации задач оптимизации разработки. <strong>tclspice</strong> — программа моделирования для тех, кто интересуется продвинутой, скриптовой разработкой.</div>
</li>
</ul>

<p>
Есть ещё программа моделирования <strong>gnucap</strong> под лицензией <acronym title="GNU General Public License">GPL</acronym>, основанная на
(или являющаяся потомком) <strong>Al&#039;s Circuit Simulator</strong> (<strong>ACS</strong>). Я её особо
не использовал, поэтому информация о <strong>gnucap</strong> здесь отсутствует и её нужно
добавить (<img src="images/smileys/fixme.gif" class="middle" alt="FIXME" />).
</p>

</div>
<!-- EDIT27 SECTION "SPICE-моделирование" [80376-83501] -->
<h3 class="sectionedit28"><a name="ltspice" id="ltspice">LTSpice</a></h3>
<div class="level3">

<p>
Программа <strong>LTSpice</strong> была написана в Linear Technologies, её авторы —
<em>Mike Englehardt</em> и другие. Затем LinearTech отдала её в свободное
пользование как вспомогательное средство для проектирования инженерам,
желающим моделировать характеристики её контроллеров блоков питания,
работающих в ключевом режиме.  Пакет предоставляет оболочку для
редактирования принципиальных схем, простой и мощный SPICE-процессор и
возможность построения графиков результатов различных видов расчётов SPICE.
Лично мне оболочка для разработки схем кажется неуклюжей и неудобной для
работы; <strong>gschem</strong> разбивает её наголову по простоте использования и
возможностям.  Однако SPICE-процессор и средства анализа в <strong>LTSpice</strong>
просто превосходны.
</p>

<p>
Программа <strong>LTSpice</strong> исходно предназначалась для работы в Windows, но
<em>Mike</em> немного изменил её, так что она довольно хорошо работает и в
GNU/Linux из-под <strong>wine</strong>. (Только система меню справки сломана —
остальная часть пакета работает хорошо). Ещё одной приятной стороной
<strong>LTSpice</strong> является хорошая поддержка, — <em>Mike</em> регулярно читает
новостные группы <em>sci.electronics.cad</em> и, как правило, всегда рад помочь
тем, кто испытывает с ней проблемы. Поэтому, несмотря на её
Windoze-наследие, я рекомендую <strong>LTSpice</strong> как мощный, профессионального
качества драйвер моделирования и анализа для gEDA.
</p>

</div>

<h4><a name="установка_и_настройка_ltspice" id="установка_и_настройка_ltspice">Установка и настройка LTSpice</a></h4>
<div class="level4">

<p>
Установка и настройка <strong>LTSpice</strong> производится следующим образом:
</p>
<ol>
<li class="level1"><div class="li"> Загрузите и установите <strong>wine</strong>. Мне удалось поставить <strong>Wine-20030219</strong>. Более поздние версии наверняка тоже будут работать.</div>
</li>
<li class="level1"><div class="li"> Загрузите <strong>LTSpice</strong>. Программа доступна по адресу <a href="http://www.linear.com/software" class="urlextern" title="http://www.linear.com/software"  rel="nofollow">http://www.linear.com/software</a> под названием <strong>SwitcherCAD-III</strong>.</div>
</li>
<li class="level1"><div class="li"> Запустите программу установки <strong>LTSpice</strong> в <strong>wine</strong>.</div>
</li>
</ol>

</div>

<h4><a name="запуск_ltspice_с_проектами_geda" id="запуск_ltspice_с_проектами_geda">Запуск LTSpice с проектами gEDA</a></h4>
<div class="level4">

<p>
<strong>LTSpice</strong> умеет читать файлы списков соединений SPICE, сделанные в gEDA.  Моделирование в <strong>LTSpice</strong> мне удавалось производить следующим образом:
</p>
<ol>
<li class="level1"><div class="li"> Прежде всего регистрируйтесь в системе как обычный пользователь — <strong>wine</strong> не любит работать из-под суперпользователя.</div>
</li>
<li class="level1"><div class="li"> В каталоге своего проекта создайте файл <em><code>Simulation.cmd</code></em> и пропишите в нём команды своего SPICE-анализа (например, .OP, .AC, .DC и т. д.).</div>
</li>
<li class="level1"><div class="li"> Добавьте в свою схему символ блока включения SPICE. Атрибут <code>file</code> установите в <em>Simulation.cmd</em>.</div>
</li>
<li class="level1"><div class="li"> Создайте для своего проекта список соединений.</div>
</li>
<li class="level1"><div class="li"> Сделайте ссылку на свой список соединений <em><code>output.net</code></em> в каталоге установки <strong>SwCADIII</strong>. Имя файла ссылки должно содержать суффикс <em>.cir</em>. Например: <pre class="code">ln -s ${DESIGN_HOME}/output.net ${WINE_HOME}/.wine/fake_windows/Program Files/LTC/SwCADIII/MyDesign.cir</pre>
</div>
</li>
<li class="level1"><div class="li"> Запустите <strong>LTSpice</strong>: перейдите в каталог установки <strong>SwCADIII</strong> командой <strong>cd</strong> и запустите <pre class="code">wine scad3.exe</pre>
</div>
</li>
<li class="level1"><div class="li"> В окне <strong>SwCADIII</strong> выберите <strong><em>Файл</em></strong> → <strong><em>Открыть</em></strong> → <em><code>(файлы типа списков соединений [.cir])</code></em> и выберите свой файл.</div>
</li>
<li class="level1"><div class="li"> Запустите моделирование щелчком по кнопке запуска (<strong>Run</strong>) или с помощью <strong><em>Моделирование</em></strong> → <strong><em>Запуск</em></strong>.</div>
</li>
<li class="level1"><div class="li"> Выберите для графика переменные и щёлкните OK. Дальше программа <strong>SwCADIII</strong> всё сделает сама.</div>
</li>
</ol>

<p>
Конечно, чтобы понять, как пользоваться программой <strong>LTSpice</strong> эффективно,
очень важно с ней позаниматься, но для начала вам должно быть достаточно
вышеизложенного описания.
</p>

</div>
<!-- EDIT28 SECTION "LTSpice" [83502-88851] -->
<h3 class="sectionedit29"><a name="ngspice" id="ngspice">Ngspice</a></h3>
<div class="level3">

<p>
<strong>ngspice</strong> начал <em>Paolo Nenzi</em> в Университете Рима «La Sapienza»,
стремясь создать версию стандартного Berkeley SPICE версии 3 под лицензией
<acronym title="GNU General Public License">GPL</acronym>, полностью переписав этот пакет. В его планы также входило создание
лучших, более ясных алгоритмов расчётов для SPICE-процессора. Больше
информации можно найти на веб-странице <strong>ngspice</strong>:
<a href="http://ngspice.sourceforge.net/" class="urlextern" title="http://ngspice.sourceforge.net/"  rel="nofollow">http://ngspice.sourceforge.net/</a>.  Но в свете этих возвышенных планов
<em>Paolo</em> стал заниматься несколько другим: он взял код <strong>SPICE 3</strong>, много
лет гуляющий по интернету, переработал его, и написал систему сборки, чтобы
его можно было бы скомпилировать обычным способом с помощью <strong>GNU
make</strong>. Это было главное достижение, за которое <em>Paolo</em> заслуживает
огромной похвалы. К сожалению, судя по виду веб-страницы, разработка
<strong>ngspice</strong> похоже остановилась в конце 2001 г. На самом деле после 2001
г. разработка значительно замедлилась, но в последнее время <em>Paolo</em> снова
занялся <strong>ngspice</strong>. Последнюю версию, <strong>ngspice-rework-15</strong>, он выпустил в
феврале 2004 года. Эта версия доступна только на странице загрузки сайта
<em>sourceforge</em>; <em>Paolo</em> пока не обновил остальную часть веб-страницы
проекта.
</p>

</div>

<h4><a name="установка_и_конфигурирование_ngspice" id="установка_и_конфигурирование_ngspice">Установка и конфигурирование ngspice</a></h4>
<div class="level4">

<p>
Вообще, я пришёл к тому, что лучше загрузить, сконфигурировать и
скомпилировать исходный код <strong>ngspice</strong>, вместо того чтобы пытаться
установить двоичный пакет. Это решение я и опишу здесь в общих чертах.
</p>

</div>

<h4><a name="загрузка_исходного_кода" id="загрузка_исходного_кода">Загрузка исходного кода</a></h4>
<div class="level4">

<p>
Скачайте самую последнюю версию дистрибутива со страницы
<a href="http://sourceforge.net/projetcs/ngspice" class="urlextern" title="http://sourceforge.net/projetcs/ngspice"  rel="nofollow">http://sourceforge.net/projetcs/ngspice</a>. Обязательно самую последнюю,
так как у неё самая высокая производительность и наибольшее количество
возможностей. На май 2004 года, последний выпуск — это
<strong>ngspice-rework-15</strong>. Установите исходники туда, где вы их обычно храните.
Мне нравится держать свои исходники gEDA в отдельном каталоге, например,
<em><code>/usr/local/geda/sources/ngspice</code></em>. Можете перенять такую схему.
</p>

</div>

<h4><a name="извлечение_исходных_текстов" id="извлечение_исходных_текстов">Извлечение исходных текстов</a></h4>
<div class="level4">

<p>
Исходные тексты программы распространяются в виде «тарбола» — сжатого
архива. Вам нужно извлечь из него файлы, сделав следующее:
</p>
<pre class="code">user@host:~$ cd &lt;каталог, куда следует извлечь исходные файлы&gt;
user@host:~sources$ tar -xvzf &lt;/путь/к/пакету.tar.gz&gt;
user@host:~sources$ cd &lt;извлечённый каталог&gt;</pre>

<p>
В этот момент вы находитесь в корневом каталоге <strong>ngspice</strong>. Чтобы
познакомиться с этой программой и процессом её установки поближе, прочитайте
общеизвестные файлы, такие как <em><code>README</code></em> и <em><code>INSTALL</code></em>. Также
неплохо бы почитать файл <em><code>NOTES</code></em>, в нём содержится информация,
полезная для разработки или отладки возможностей <strong>ngspice</strong>.
</p>

</div>

<h4><a name="конфигурирование_и_компиляция_ngspice" id="конфигурирование_и_компиляция_ngspice">Конфигурирование и компиляция ngspice</a></h4>
<div class="level4">

<p>
Для сборки <strong>ngspice</strong> используется обычная последовательность <strong><code>configure &amp;&amp; make &amp;&amp; make install</code></strong>, применяемая и для прочих GNU-тых программ. Для конфигурирования <strong>ngspice</strong> имеется достаточно много ключей. <img src="images/smileys/fixme.gif" class="middle" alt="FIXME" />: Полный их перечень и сопровождающая документация нуждаются в доработке; чтобы увидеть их все, лучше всего посмотреть файл <em><code>configure.ac</code></em>. Многие из ключей, доступных на этапе конфигурирования, предназначены для отладки программы моделирования или для включения возможностей экспериментальных видов анализа. Новичкам стоит обратить внимание на три ключа:
</p>
<ul>
<li class="level1"><div class="li"> <code>--enable-xspice</code>: этим ключом добавляется поддержка расширений XSpice. Эти расширения позволяют вам  определить устройства, чьё поведение задаётся специальными «моделями кода». Возможно наиболее важной моделью кода является <code>spice2poly</code>, которая транслирует конструкции <a href="geda-spice_polys.ru.html" class="wikilink1" title="geda-spice_polys.ru.html">POLY</a> в стиле SPICE 2 в модели XSpice, пригодные для использования в SPICE 3.</div>
</li>
<li class="level1"><div class="li"> <code>--with-readline</code>: при задании этого ключа в <strong>ngspice</strong> встраивается поддержка GNU <strong>readline</strong>. Это значит, что вы сможете использовать как клавиатурные команды в стиле <strong>emacs</strong>, так и клавиши со стрелками для перемещения в строке ввода команд. Без этой возможности интерфейс командной строки будет враждебным, то есть, если вы ошибётесь при вводе длинной команды, у вас не останется других вариантов, кроме как снова ввести её целиком. <em>Paolo</em> не советует использовать возможность <code>readline</code>, поскольку при этом код <acronym title="GNU General Public License">GPL</acronym> (<strong>readline</strong>) смешивается с кодом BSD (<strong>ngspice</strong>), но для других он этот ключ оставил, чтобы люди сами могли решить, насколько быть целомудренными в этом вопросе.</div>
</li>
<li class="level1"><div class="li"> <code>--prefix</code>: этим ключом задаётся базовый каталог установки двоичных файлов программ.</div>
</li>
</ul>

<p>
Прежде чем запускать <strong>configure</strong> нужно проверить ключи, которые вы хотите
задать. Краткое описание приведено в приложении (<img src="images/smileys/fixme.gif" class="middle" alt="FIXME" />: требуется
доработка). Как только будете готовы, наберите:
</p>
<pre class="code">user@host:~sources/&lt;tld&gt;$ ./configure --enable-xspice --with-readline --prefix=/usr/local/geda &lt;другие ключи конфигурации&gt;</pre>

<p>
Конечно, <code>--prefix=</code> должен указывать на тот каталог, где находятся
<strong>ваши</strong> файлы, относящиеся к gEDA. После выполнения этой команды программа
моделирования будет сконфигурирована и готова для компиляции. Компиляция
проста:
</p>
<pre class="code">user@host:~sources/&lt;tld&gt;$ make &amp;&amp; make install</pre>

<p>
Как обычно для установки пакетов в общедоступный каталог скорее всего вам
понадобятся права суперпользователя, в таком случае нужно сделать так:
</p>
<pre class="code">user@host:~sources/&lt;tld&gt;$ make
user@host:~sources/&lt;tld&gt;$ su -c make install</pre>

</div>

<h4><a name="проверка_установки" id="проверка_установки">Проверка установки</a></h4>
<div class="level4">

<p>
В этот момент вы должны быть способны запустить <strong>ngspice</strong>.  Свою установку
можно проверить, попробовав обработать одну из тестовых схем из каталога с
тестами. Я рекомендую запустить тест <em><code>TransImpedanceAmp</code></em>, так как в
нём проверяется функциональность SPICE 2 <a href="geda-spice_polys.ru.html" class="wikilink1" title="geda-spice_polys.ru.html">POLY</a>.
</p>

</div>

<h4><a name="использование_ngspice" id="использование_ngspice">Использование ngspice</a></h4>
<div class="level4">

<p>
Запуск <strong>ngspice</strong> очень прост. В приглашении командной строки Unix введите
команду:
</p>
<pre class="code">user@host:~$ ngspice filename.net</pre>

<p>
и <strong>ngspice</strong> загрузит список соединений SPICE <em><code>filename.net</code></em> в своё
рабочее пространство и выведет своё приглашение командной строки. Вы можете
запустить моделирование, сказав «run» (запуск). Результаты будут сохранены в
массиве SPICE для дальнейшей печати на принтере или черчения на
плоттере. Набор имеющихся в распоряжении команд приведён на странице
<a href="http://newton.ex.ac.uk/teaching/CDHW/Electronics2/userguide/sec5.html#5" class="urlextern" title="http://newton.ex.ac.uk/teaching/CDHW/Electronics2/userguide/sec5.html#5"  rel="nofollow">http://newton.ex.ac.uk/teaching/CDHW/Electronics2/userguide/sec5.html#5</a>.
</p>

<p>
Для использования кодовой модели SPICE 2 <a href="geda-spice_polys.ru.html" class="wikilink1" title="geda-spice_polys.ru.html">POLY</a> её
нужно загрузить в <strong>ngspice</strong> <strong><em class="u">до</em></strong> загрузки списка соединений. (Если
вы загрузите её после загрузки списка соединений, элементы
<a href="geda-spice_polys.ru.html" class="wikilink1" title="geda-spice_polys.ru.html">POLY</a> в ней транслироваться не будут и потому не
будут и правильно смоделированы.) Чтобы загрузить кодовую модель, в строке
приглашения <strong>ngspice</strong> нужно просто сказать:
</p>
<pre class="code">codemodel /usr/local/geda/lib/spice/spice2poly.cm</pre>

<p>
(укажите здесь местоположение своих кодовых моделей). Учтите, что для
кодовой модели следует указать <strong>абсолютное имя файла</strong>; программа
<strong>ngspice</strong> не настолько сообразительна, чтобы искать её в стандартных
каталогах. (Также обратите внимание, что нужно указать путь к
<em><code>spice2poly.cm</code></em> на своей машине; путь, указанный выше, — мой.)
</p>

<p>
Лучшим способом для считывания кодовой модели <em><code>spice2poly</code></em> будет
включение её в файл инициализации <strong>ngspice</strong> — <em><code>spinit</code></em>. Файл
инициализации находится в каталоге
<em><code>/usr/local/geda/share/ng-spice-rework/scripts</code></em> (или где-то ещё, где у
вас установлены файлы gEDA). В файле <em><code>spinit</code></em> можно задать и другие
настройки для <strong>ngspice</strong>.
</p>

</div>
<!-- EDIT29 SECTION "Ngspice" [88852-100774] -->
<h3 class="sectionedit30"><a name="tclspice" id="tclspice">Tclspice</a></h3>
<div class="level3">

<p>
Когда в 2002-м году основная ветка разработки <strong>ngspice</strong> впала в спячку,
несколько товарищей из MultiGig Ltd. (<a href="http://www.multigig.com/" class="urlextern" title="http://www.multigig.com/"  rel="nofollow">http://www.multigig.com/</a>) занялись
разработкой ветки <strong>ngspice</strong>, которую они назвали <strong>tclspice</strong>.
<strong>tclspice</strong> — это расширенный вариант <strong>ngspice</strong>, в котором множество
команд SPICE экспортируется как <acronym title="Application Programming Interface">API</acronym> к Tcl. При этом преследуется цель
облегчить написание скриптов для расчётов SPICE. Это очень мощное средство:
для <strong>tclspice</strong> можно написать скрипт на Tcl, который запустит цикл,
подстроит значения компонентов, запустит анализ, а затем рассчитает
характеристики схемы с подстроенными компонентами, прежде чем запускать
новый цикл. Очевидно, эту возможность можно использовать для выполнения
автоматических, многомерных <a href="geda-glossary.ru.html#оптимизация_схемы" class="wikilink1" title="geda-glossary.ru.html">оптимизаций
схемы</a>. Если проект будет завершён, <strong>tclspice</strong> возможно станет
«приложением-убийцей» для САПР электроники с открытым исходным кодом.
</p>

</div>

<h4><a name="загрузка_установка_и_сборка_tclspice" id="загрузка_установка_и_сборка_tclspice">Загрузка, установка и сборка tclspice</a></h4>
<div class="level4">

<p>
Домашняя страница проекта <strong>tclspice</strong> находится по адресу
<a href="http://tclspice.sourceforge.net/" class="urlextern" title="http://tclspice.sourceforge.net/"  rel="nofollow">http://tclspice.sourceforge.net/</a>. Исходные коды <strong>tclspice</strong> проживают
по адресу <a href="http://sourceforge.net/projects/tclspice" class="urlextern" title="http://sourceforge.net/projects/tclspice"  rel="nofollow">http://sourceforge.net/projects/tclspice</a>.  Для загрузки и
установки <strong>tclspice</strong> используются те же самые шаги, что подробно расписаны
для <strong>ngspice</strong> выше. Так как <strong>tclspice</strong> является расширенным вариантом
<strong>ngspice</strong>, то если нужно, из исходных текстов <strong>tclspice</strong> можно
установить только <strong>ngspice</strong>. Сборка целого пакета потребует пары
дополнительных шагов.  Здесь я представлю последовательность шагов для
сборки и <strong>ngspice</strong> (автономной программы с интерфейсом командной строки),
и <acronym title="Application Programming Interface">API</acronym> для Tcl из исходных текстов <strong>tclspice</strong>.
</p>

<p>
Перед сборкой <strong>tclspice</strong> у вас уже должны быть установлены следующие пакеты:
</p>
<ul>
<li class="level1"><div class="li"> TclX (у меня собирается с tclx8.3.5)</div>
</li>
<li class="level1"><div class="li"> tclreadline (у меня собирается с tclreadline-2.1.0)</div>
</li>
<li class="level1"><div class="li"> BLT for Tcl (у меня собирается с blt2.4z)</div>
</li>
<li class="level1"><div class="li"> Tcl/Tk (у меня собирается с 8.4.3.)</div>
</li>
</ul>

<p>
Если на вашей Linux-машине эти пакеты ещё не установлены, их нужно найти и
собрать. Обратите внимание, что сборка TclX требует наличия исходных текстов
для Tcl и Tk, так что вам придётся также загрузить исходные тексты и этих
пакетов, если они у вас ещё не установлены. У меня успешно работает Tcl/Tk
8.4.3, хотя возможно будут работать и версии 8.3.X. Также, если вы хотите
запускать SPICE в фоновом режиме, вам придётся перекомпилировать Tcl и Tk с
разрешением поддержки нитей (thread), если она уже не была разрешена (в
пакетах для RedHat — нет).
</p>

<p>
Будем считать, что вы уже загрузили и установили указанные выше
дополнительные пакеты. Тогда для сборки на своей машине и <strong>ngspice</strong>, и <acronym title="Application Programming Interface">API</acronym>
для Tcl, вам нужно предпринять следующее:
</p>
<pre class="code">user@host:~sources/&lt;tld&gt;$ ./configure --enable-xspice --with-readline  --prefix=/usr/local/geda
user@host:~sources/&lt;tld&gt;$ make &amp;&amp; make install (этими командами собирается и устанавливается старый добрый ngspice)
user@host:~sources/&lt;tld&gt;$ ./configure --enable-xspice --prefix=/usr/local/geda --enable-tcl --enable-experimental --disable-shared
user@host:~sources/&lt;tld&gt;$ make tcl &amp;&amp; make install-tcl</pre>

<p>
Как обычно для установки пакетов в общедоступный каталог скорее всего вам
понадобятся права суперпользователя, в таком случае нужно сделать так:
</p>
<pre class="code">user@host:~sources/&lt;tld&gt;$ su -c make install
user@host:~sources/&lt;tld&gt;$ su -c make install-tcl</pre>

<p>
Теперь всё готово для написания скриптов на Tcl, включающих команды SPICE.
Информация об использовании <strong>tclspice</strong> приведена ниже. Наконец, если вам
интересно попрограммировать <strong>tclspice</strong> (и даже если нет), будет неплохо
прочитать файл <em><code>NOTES</code></em>, находящийся в корневом каталоге исходников, в
котором можно найти пару полезных советов.
</p>

</div>

<h4><a name="использование_tclspice" id="использование_tclspice">Использование tclspice</a></h4>
<div class="level4">

<p>
<strong>tclspice</strong> разработан для экспорта команд SPICE в программы на Tcl. Чтобы
использовать <strong>tclspice</strong>, в начале своей программы на Tcl нужно просто
сказать <code>package require spice</code>. После этого, чтобы запустить команду
SPICE, при её вызове надо просто задать пространство имён <code>spice</code>. Как
пример приведём программу на Tcl, которая прочитает список соединений SPICE,
прикажет сделать <a href="geda-glossary.ru.html#временной_анализ" class="wikilink1" title="geda-glossary.ru.html">временной анализ</a>, запустит
моделирование, а затем начертит график напряжения для соединения <em>Vout</em> за
указанное время:
</p>
<pre class="code">#! tclsh
package require spice
spice::codemodel /usr/local/src/tclspice-0.2.12/src/xspice/icm/spice2poly.cm
spice::source netlistname.cir
spice::tran 0.1ns 40ns
spice::run
spice::plot Vout
puts &quot;Всё готово!&quot;</pre>

<p>
Обратите внимание, что поскольку <strong>tclspice</strong> не читает инициализационный
файл <strong>ngspice</strong> <em><code>spinit</code></em>, любые команды инициализации вам придётся
задавать непосредственно в программе на Tcl. Например, в вышеприведённом
примере мы читаем кодовую модель <code>spice2poly</code> непосредственно в рабочее
пространство.  Доступно и много других команд; полный набор команд
<strong>tclspice</strong> приводится на странице
<a href="http://tclspice.sourceforge.net/docs/tclspice_com.html" class="urlextern" title="http://tclspice.sourceforge.net/docs/tclspice_com.html"  rel="nofollow">http://tclspice.sourceforge.net/docs/tclspice_com.html</a>.
</p>

</div>

<h4><a name="проблемы_в_tclspice" id="проблемы_в_tclspice">Проблемы в tclspice</a></h4>
<div class="level4">

<p>
Главная проблема <strong>tclspice</strong> (унаследованная от <strong>ngspice</strong>) — утечки
памяти. Поэтому время моделирования в ней ограничено. Это значит, что если
вы хотите сделать оптимизацию, многократно повторив цикл моделирования для
схемы, память может быть исчерпана прежде, чем программа закончит
оптимизацию. Это известная проблема в <strong>tclspice</strong> и сейчас затрачиваются
большие усилия для того, чтобы утечки заткнуть.
</p>

<p>
Между тем для осуществления длительной оптимизации существуют кое-какие
обходные пути, которые можно использовать для проектов среднего размера. Я
применял один способ, состоящий в том, что после каждого анализа схемы
оптимизатор записывает данные своего текущего состояния в файл и из этого же
файла читает данные своего исходного состояния. Оптимизатор также сохраняет
текущий перечень лучших вариантов компонентов в другой файл и читает этот
файл при каждом запуске оптимизации. К тому же у меня есть программа на Tcl
под названием <strong>TaskMgr.tcl</strong>, работающая циклически; при каждой итерации
цикла она порождает дочерний процесс для запуска оптимизатора. Между тем
родительский процесс ожидает 5 минут (эвристически найденное время), а
затем, прежде чем повторять цикл и запускать оптимизатор снова, выдаёт
дочернему процессу сигнал «KILL».  Таким образом оптимизатор никогда не
работает настолько долго, чтобы съесть всю память на моей машине. Вот
собственно сама программа <strong>TaskMgr.tcl</strong>:
</p>
<pre class="code">#! tclsh
package require Tclx
while {1} {
  set PID [fork]
  if {$PID} {
    # Родительский процесс
    after 300000
    puts &quot;Собираюсь убить дочерний процесс PID = $PID . . . .&quot;
    kill $PID
    wait $PID
  } else {
    # Дочерний процесс
    source Optimize.tcl
    # Если мы вдруг когда-нибудь пройдём через всё это, можем выдать следующее:
    error &quot;Мы закончили!!!!!!&quot;
  }
}</pre>

<p>
Заметьте, что для запуска <strong>tclspice</strong> программе <strong>TaskMgr.tcl</strong> требуется,
чтобы пакет <strong>TclX</strong> уже был установлен. Может быть вам следует также задать
другое время ожидания в зависимости от объёма памяти и скорости вашей
машины.  Наконец, родительскому процессу придётся следить и за $PID (с
помощью <code>wait</code>), так как когда дочерний процесс умрёт, нужно чтобы и его
труп был выкинут из списка задач ядра. Иначе работа оптимизатора приведёт к
порождению целой толпы процессов-зомби, подстерегающих вас на вашей машине
за каждым углом, — длительная оптимизация может превратить вашу систему в
«ночь живой смерти»!
</p>

<p>
Такой метод ограничения времени для дочернего процесса предпочтителен в том
случае, когда одиночный анализ занимает относительно немного времени по
сравнению с временем, требуемым для съедания всей памяти машины. Если же
время анализа сопоставимо со временем съедания всей памяти, то лучше
заставить родительский процесс следить за состоянием анализа, запустить
одиночный анализ, а затем заставить этот анализ завершаться после каждой
итерации.  Предпочтителен ли такой вариант, зависит от размера и сложности
вашего проекта; может быть вам следует поэкспериментировать со своим
анализом, чтобы узнать, как долго он длится и сколько потребляет памяти. Я
нашёл, что анализ для проекта из шести операционных усилителей (с
соответствующими моделями поставщиков) и пятидесяти или около того пассивных
элементов на PIII 333MHz c 128MB RAM будет длиться менее 10 секунд. Поэтому,
чтобы одиночный анализ съел значительное количество памяти, ваш проект
должен быть довольно большим.
</p>

</div>
<!-- EDIT30 SECTION "Tclspice" [100775-114397] -->
<h2 class="sectionedit31"><a name="приложение_a_поддерживаемые_компоненты_и_их_атрибуты" id="приложение_a_поддерживаемые_компоненты_и_их_атрибуты">Приложение A. Поддерживаемые компоненты и их атрибуты</a></h2>
<div class="level2">

<p>
В таблице 1 представлены устройства и связанные с ними атрибуты,
используемые драйвером <strong>spice-sdb</strong>. <strong>Необходимые</strong> атрибуты выделены
<strong>жирным шрифтом</strong>, прочие указаны обычным. Заметьте, что атрибут <code>device</code>
невидим и обычно прикрепляется к символу при его создании. Другие атрибуты
прикрепляются к символу в <strong>gschem</strong> при разработке схемы.
</p>

<p>
Если вы имеете дело только с простыми активными компонентами (диодами,
транзисторами) при наличии их моделей SPICE в виде файлов, то нужно задать
только атрибуты <code>model-name</code> и <code>file</code>; атрибут <code>model</code> задавать не
нужно. Но если для вашего простого активного компонента есть однострочная
SPICE-модель, которую хотелось бы ввести непосредственно в схеме, тогда
задайте атрибуты <code>model</code> и <code>model-name</code>; атрибут <code>file</code> задавать не
нужно.
</p>

<p>
<strong>Таблица 1.</strong> Атрибуты, необходимые для создания списка соединений SPICE
</p>
<div class="table sectionedit32"><table class="inline">
	<tr class="row0">
		<th class="col0 centeralign">  <code>device</code>  </th><th class="col1 centeralign">  <code>refdes</code>  </th><th class="col2 centeralign">  <code>value</code>  </th><th class="col3 centeralign">  <code>model</code>  </th><th class="col4 centeralign">  <code>file</code>  </th><th class="col5 centeralign">  <code>model-name</code>  </th><th class="col6 centeralign">  <code>type</code>  </th><th class="col7 centeralign">  Комментарий  </th>
	</tr>
	<tr class="row1">
		<td class="col0"><strong>RESISTOR</strong></td><td class="col1 centeralign">  <strong>R?</strong>  </td><td class="col2 centeralign">  <strong>(4)</strong>  </td><td class="col3 centeralign">  (2)  </td><td class="col4 centeralign">  -  </td><td class="col5 centeralign">  Название модели  </td><td class="col6 centeralign">  -  </td><td class="col7 centeralign">  (11)  </td>
	</tr>
	<tr class="row2">
		<td class="col0"><strong>CAPACITOR</strong></td><td class="col1 centeralign">  <strong>C?</strong>  </td><td class="col2 centeralign">  <strong>(4)</strong>  </td><td class="col3 centeralign">  (3)  </td><td class="col4 centeralign">  -  </td><td class="col5 centeralign">  Название модели  </td><td class="col6 centeralign">  -  </td><td class="col7 centeralign">  (11)  </td>
	</tr>
	<tr class="row3">
		<td class="col0"><strong>POLARIZED_CAPACITOR</strong></td><td class="col1 centeralign">  <strong>C?</strong>  </td><td class="col2 centeralign">  <strong>(4)</strong>  </td><td class="col3 centeralign">  (3)  </td><td class="col4 centeralign">  -  </td><td class="col5 centeralign">  Название модели  </td><td class="col6 centeralign">  -  </td><td class="col7 centeralign">  (11)  </td>
	</tr>
	<tr class="row4">
		<td class="col0"><strong>INDUCTOR</strong></td><td class="col1 centeralign">  <strong>L?</strong>  </td><td class="col2 centeralign">  <strong>(4)</strong>  </td><td class="col3 centeralign">  (3)  </td><td class="col4 centeralign">  -  </td><td class="col5 centeralign">  Название модели  </td><td class="col6 centeralign">  -  </td><td class="col7 centeralign">  (11)  </td>
	</tr>
	<tr class="row5">
		<td class="col0"><strong>SPICE-ccvs</strong></td><td class="col1 centeralign">  <strong>H?</strong>  </td><td class="col2 centeralign">  <strong>(5)</strong>  </td><td class="col3 centeralign">  -  </td><td class="col4 centeralign">  -  </td><td class="col5 centeralign">  -  </td><td class="col6 centeralign">  -  </td><td class="col7 centeralign">  Источник напряжения,<br/>
управляемый током  </td>
	</tr>
	<tr class="row6">
		<td class="col0"><strong>SPICE-cccs</strong></td><td class="col1 centeralign">  <strong>F?</strong>  </td><td class="col2 centeralign">  <strong>(5)</strong>  </td><td class="col3 centeralign">  -  </td><td class="col4 centeralign">  -  </td><td class="col5 centeralign">  -  </td><td class="col6 centeralign">  -  </td><td class="col7 centeralign">  Источник тока,<br/>
управляемый током  </td>
	</tr>
	<tr class="row7">
		<td class="col0"><strong>SPICE-vcvs</strong></td><td class="col1 centeralign">  <strong>E?</strong>  </td><td class="col2 centeralign">  <strong>(5)</strong>  </td><td class="col3 centeralign">  -  </td><td class="col4 centeralign">  -  </td><td class="col5 centeralign">  -  </td><td class="col6 centeralign">  -  </td><td class="col7 centeralign">  Источник напряжения,<br/>
управляемый напряжением  </td>
	</tr>
	<tr class="row8">
		<td class="col0"><strong>SPICE-vccs</strong></td><td class="col1 centeralign">  <strong>G?</strong>  </td><td class="col2 centeralign">  <strong>(5)</strong>  </td><td class="col3 centeralign">  -  </td><td class="col4 centeralign">  -  </td><td class="col5 centeralign">  -  </td><td class="col6 centeralign">  -  </td><td class="col7 centeralign">  Источник тока,<br/>
управляемый напряжением  </td>
	</tr>
	<tr class="row9">
		<td class="col0"><strong>SPICE-nullor</strong></td><td class="col1 centeralign">  <strong>N?</strong>  </td><td class="col2 centeralign">  <strong>(15)</strong>  </td><td class="col3 centeralign">  -  </td><td class="col4 centeralign">  -  </td><td class="col5 centeralign">  -  </td><td class="col6 centeralign">  -  </td><td class="col7 leftalign">    </td>
	</tr>
	<tr class="row10">
		<td class="col0"><strong>DIODE</strong></td><td class="col1 centeralign">  <strong>D?</strong>  </td><td class="col2 centeralign">  Тип прибора  </td><td class="col3 centeralign">  Однострочная SPICE-модель  </td><td class="col4 centeralign">  Имя файла модели  </td><td class="col5 centeralign">  <strong>Название модели</strong>  </td><td class="col6 centeralign">  -  </td><td class="col7 centeralign">  (12)  </td>
	</tr>
	<tr class="row11">
		<td class="col0"><strong>PMOS_TRANSISTOR</strong></td><td class="col1 centeralign">  <strong>M?</strong>  </td><td class="col2 centeralign">  Тип прибора  </td><td class="col3 centeralign">  Однострочная SPICE-модель  </td><td class="col4 centeralign">  Имя файла модели  </td><td class="col5 centeralign">  <strong>Название модели</strong>  </td><td class="col6 centeralign">  -  </td><td class="col7 centeralign">  (12)  </td>
	</tr>
	<tr class="row12">
		<td class="col0"><strong>NMOS_TRANSISTOR</strong></td><td class="col1 centeralign">  <strong>M?</strong>  </td><td class="col2 centeralign">  Тип прибора  </td><td class="col3 centeralign">  Однострочная SPICE-модель  </td><td class="col4 centeralign">  Имя файла модели  </td><td class="col5 centeralign">  <strong>Название модели</strong>  </td><td class="col6 centeralign">  -  </td><td class="col7 centeralign">  (12)  </td>
	</tr>
	<tr class="row13">
		<td class="col0"><strong>PNP_TRANSISTOR</strong></td><td class="col1 centeralign">  <strong>Q?</strong>  </td><td class="col2 centeralign">  Тип прибора  </td><td class="col3 centeralign">  Однострочная SPICE-модель  </td><td class="col4 centeralign">  Имя файла модели  </td><td class="col5 centeralign">  <strong>Название модели</strong>  </td><td class="col6 centeralign">  -  </td><td class="col7 centeralign">  (12)  </td>
	</tr>
	<tr class="row14">
		<td class="col0"><strong>NPN_TRANSISTOR</strong></td><td class="col1 centeralign">  <strong>Q?</strong>  </td><td class="col2 centeralign">  Тип прибора  </td><td class="col3 centeralign">  Однострочная SPICE-модель  </td><td class="col4 centeralign">  Имя файла модели  </td><td class="col5 centeralign">  <strong>Название модели</strong>  </td><td class="col6 centeralign">  -  </td><td class="col7 centeralign">  (12)  </td>
	</tr>
	<tr class="row15">
		<td class="col0"><strong>PFET_TRANSISTOR</strong></td><td class="col1 centeralign">  <strong>J?</strong>  </td><td class="col2 centeralign">  Тип прибора  </td><td class="col3 centeralign">  Однострочная SPICE-модель  </td><td class="col4 centeralign">  Имя файла модели  </td><td class="col5 centeralign">  <strong>Название модели</strong>  </td><td class="col6 centeralign">  -  </td><td class="col7 centeralign">  (12)  </td>
	</tr>
	<tr class="row16">
		<td class="col0"><strong>NFET_TRANSISTOR</strong></td><td class="col1 centeralign">  <strong>J?</strong>  </td><td class="col2 centeralign">  Тип прибора  </td><td class="col3 centeralign">  Однострочная SPICE-модель  </td><td class="col4 centeralign">  Имя файла модели  </td><td class="col5 centeralign">  <strong>Название модели</strong>  </td><td class="col6 centeralign">  -  </td><td class="col7 centeralign">  (12)  </td>
	</tr>
	<tr class="row17">
		<td class="col0"><strong>MESFET_TRANSISTOR</strong></td><td class="col1 centeralign">  <strong>B?</strong>  </td><td class="col2 centeralign">  Тип прибора  </td><td class="col3 centeralign">  Однострочная SPICE-модель  </td><td class="col4 centeralign">  Имя файла модели  </td><td class="col5 centeralign">  <strong>Название модели</strong>  </td><td class="col6 centeralign">  -  </td><td class="col7 centeralign">  (12)  </td>
	</tr>
	<tr class="row18">
		<td class="col0"><strong>IC</strong></td><td class="col1 centeralign">  <strong>U?</strong>  </td><td class="col2 centeralign">  Тип прибора  </td><td class="col3 leftalign">    </td><td class="col4 centeralign">  Имя файла <em><code>.model</code></em>  </td><td class="col5 centeralign">  <strong>Название модели</strong>  </td><td class="col6 centeralign">  -  </td><td class="col7 centeralign">  Для ИС с файлом<br/>
<em><code>.model</code></em>  </td>
	</tr>
	<tr class="row19">
		<td class="col0"><strong>IC</strong></td><td class="col1 centeralign">  <strong>X?</strong>  </td><td class="col2 centeralign">  Тип прибора  </td><td class="col3 leftalign">    </td><td class="col4 centeralign">  Имя файла <em><code>.subckt</code></em>  </td><td class="col5 centeralign">  <strong>Название .subckt</strong>  </td><td class="col6 centeralign">  -  </td><td class="col7 centeralign">  Для ИС с файлом<br/>
<em><code>.subckt</code></em>  </td>
	</tr>
	<tr class="row20">
		<td class="col0"><strong>model</strong></td><td class="col1 centeralign">  <strong>A?</strong>  </td><td class="col2 centeralign">  -  </td><td class="col3 centeralign">  Однострочная SPICE-модель  </td><td class="col4 centeralign">  Имя файла <em><code>.model</code></em>  </td><td class="col5 centeralign">  <strong>(9)</strong>  </td><td class="col6 centeralign">  <strong>(10)</strong>  </td><td class="col7 centeralign">  (12)  </td>
	</tr>
	<tr class="row21">
		<td class="col0"><strong>include</strong></td><td class="col1 centeralign">  <strong>A?</strong>  </td><td class="col2 centeralign">  -  </td><td class="col3 centeralign">  -  </td><td class="col4 centeralign">  <strong>Имя файла <em><code>.include</code></em></strong>  </td><td class="col5 centeralign">  -  </td><td class="col6 centeralign">  -  </td><td class="col7 centeralign">  (13)  </td>
	</tr>
	<tr class="row22">
		<td class="col0"><strong>options</strong></td><td class="col1 centeralign">  <strong>A?</strong>  </td><td class="col2 centeralign">  <strong>(8)</strong>  </td><td class="col3 centeralign">  -  </td><td class="col4 centeralign">  -  </td><td class="col5 centeralign">  -  </td><td class="col6 centeralign">  -  </td><td class="col7 centeralign">  (14)  </td>
	</tr>
	<tr class="row23">
		<td class="col0"><strong>directive</strong></td><td class="col1 centeralign">  <strong>A?</strong>  </td><td class="col2 centeralign">  <strong>(1)</strong>  </td><td class="col3 centeralign">  -  </td><td class="col4 centeralign">  -  </td><td class="col5 centeralign">  -  </td><td class="col6 centeralign">  -  </td><td class="col7 centeralign">  (12)  </td>
	</tr>
	<tr class="row24">
		<td class="col0"><strong>VOLTAGE_SOURCE</strong></td><td class="col1 centeralign">  <strong>V?</strong>  </td><td class="col2 centeralign">  <strong>(6)</strong>  </td><td class="col3 centeralign">  -  </td><td class="col4 centeralign">  -  </td><td class="col5 centeralign">  -  </td><td class="col6 centeralign">  -  </td><td class="col7 centeralign">  Независимый<br/>
источник напряжения  </td>
	</tr>
	<tr class="row25">
		<td class="col0"><strong>CURRENT_SOURCE</strong></td><td class="col1 centeralign">  <strong>I?</strong>  </td><td class="col2 centeralign">  <strong>(7)</strong>  </td><td class="col3 centeralign">  -  </td><td class="col4 centeralign">  -  </td><td class="col5 centeralign">  -  </td><td class="col6 centeralign">  -  </td><td class="col7 centeralign">  Независимый<br/>
источник тока  </td>
	</tr>
</table></div>
<!-- EDIT32 TABLE [115991-119740] -->
<p>
(1) Одна строка, содержащая операторы SPICE для включения в список соединений<br/>

(2) Одна строка параметров SPICE-модели (например, <code>TC</code> и т. д.)<br/>

(3) Одна строка параметров SPICE-модели (например, <code>IC</code>, <code>POLY</code> и т. д.)<br/>

(4) Числовое значение компонента<br/>

(5) Строка, описывающая режим источника<br/>

(6) Однострочное описание, содержащее режим источника напряжения<br/>

(7) Однострочное описание, содержащее режим источника тока<br/>

(8) Строка подключаемых ключей<br/>

(9) Название модели, на которую указывают компоненты<br/>

(10) Соответствующий тип SPICE-модели (допустимые типы приведены ниже)<br/>

(11) Параметры модели помещаются внутри скобок после значения компонента<br/>

(12) Для моделирования нужно включить или модель, или файл<br/>

(13) Помещает директиву <code>.INCLUDE</code> в список соединений SPICE<br/>

(14) Помещает директиву <code>.OPTIONS</code> в список соединений SPICE<br/>

(15) Достаточно высокий коэффициент усиления, например, 1000Meg; не обязательно задавать в последних версиях geda-gaf (с версии 1.9.2)
</p>

<p>
Выражение «поддерживаемый генератором списка соединений» означает, что
существует соответствующий кусок кода на Scheme, который точно знает как эти
компоненты обрабатывать и (почти) наверняка сгенерирует правильный код
SPICE.  Символы с такими атрибутами <code>device</code>, которых нет в
вышеприведённом списке, обрабатываются функцией Scheme
<code>spice-sdb:write-default-component</code>, которая для принятия решения о том,
как обрабатывать данный компонент, смотрит на его позиционное
обозначение. Как правило, при создании кода SPICE эта функция сделает «то,
что надо», но твёрдой гарантии нет. В частности, эта функция не увидит
различия между транзисторами типов N и P и для строки <code>.MODEL</code> в списке
соединений будет генерировать тип <em>&lt;unknown&gt;</em> (неизвестный).  Вероятно это
вызовет ругань программы моделирования. Поэтому лучше всего убедиться, что
для всех используемых устройств задан надлежащий атрибут <code>device</code>.
</p>

</div>
<!-- EDIT31 SECTION "Приложение A. Поддерживаемые компоненты и их атрибуты" [114398-122991] -->
<h2 class="sectionedit33"><a name="приложение_b_допустимые_значения_type" id="приложение_b_допустимые_значения_type">Приложение B. Допустимые значения «type»</a></h2>
<div class="level2">

<p>
Атрибут <code>type</code> указывает SPICE-процессору тип компонента и подготавливает
его для принятия параметров модели, специфичных для данного типа.
Допустимые значения атрибута <code>type</code> указаны в таблице 2.
</p>

<p>
<strong>Таблица 2.</strong> Допустимые значения атрибута <code>type</code> компонентов.
</p>
<div class="table sectionedit34"><table class="inline">
	<tr class="row0">
		<th class="col0 centeralign">  Компонент  </th><th class="col1 centeralign">  type  </th><th class="col2 centeralign">  Комментарий  </th>
	</tr>
	<tr class="row1">
		<td class="col0 leftalign">RESISTOR  </td><td class="col1 centeralign">  RES  </td><td class="col2">Резистор </td>
	</tr>
	<tr class="row2">
		<td class="col0 leftalign">CAPACITOR  </td><td class="col1 centeralign">  CAP  </td><td class="col2">Конденсатор </td>
	</tr>
	<tr class="row3">
		<td class="col0 leftalign">POLARIZED_CAPACITOR  </td><td class="col1 centeralign">  CAP  </td><td class="col2">Полярный конденсатор </td>
	</tr>
	<tr class="row4">
		<td class="col0 leftalign">INDUCTOR  </td><td class="col1 centeralign">  IND  </td><td class="col2">Катушка индуктивности </td>
	</tr>
	<tr class="row5">
		<td class="col0 leftalign">DIODE  </td><td class="col1 centeralign">  D  </td><td class="col2">Диод </td>
	</tr>
	<tr class="row6">
		<td class="col0 leftalign">PMOS_TRANSISTOR  </td><td class="col1 centeralign">  PMOS  </td><td class="col2">pМОП-транзистор </td>
	</tr>
	<tr class="row7">
		<td class="col0 leftalign">NMOS_TRANSISTOR  </td><td class="col1 centeralign">  NMOS  </td><td class="col2">nМОП-транзистор </td>
	</tr>
	<tr class="row8">
		<td class="col0 leftalign">PNP_TRANSISTOR  </td><td class="col1 centeralign">  PNP  </td><td class="col2">Биполярный транзистор типа pnp </td>
	</tr>
	<tr class="row9">
		<td class="col0 leftalign">NPN_TRANSISTOR  </td><td class="col1 centeralign">  NPN  </td><td class="col2">Биполярный транзистор типа npn </td>
	</tr>
	<tr class="row10">
		<td class="col0 leftalign">PFET_TRANSISTOR  </td><td class="col1 centeralign">  PJF  </td><td class="col2">Полевой транзистор с управляющим pn-переходом с каналом p-типа </td>
	</tr>
	<tr class="row11">
		<td class="col0 leftalign">NFET_TRANSISTOR  </td><td class="col1 centeralign">  NJF  </td><td class="col2">Полевой транзистор с управляющим pn-переходом с каналом n-типа </td>
	</tr>
	<tr class="row12">
		<td class="col0 leftalign">MESFET_TRANSISTOR  </td><td class="col1 centeralign">  -  </td><td class="col2">Полевой транзистор с переходом металл – полупроводник </td>
	</tr>
</table></div>
<!-- EDIT34 TABLE [123537-124543] -->
</div>
<!-- EDIT33 SECTION "Приложение B. Допустимые значения «type»" [122992-] --><div class="footnotes">
<div class="fn"><sup><a href="#fnt__1" id="fn__1" name="fn__1" class="fn_bot">1)</a></sup>
GNU Free Documentation
License</div>
<div class="fn"><sup><a href="#fnt__2" id="fn__2" name="fn__2" class="fn_bot">2)</a></sup>
Университет в Калифорнии, родина одной из ветвей Unix. — <em>Прим.
перев.</em></div>
</div>
</div>
</body>
</html>
